2016-02-03 4 views
0

Я создаю выпадающий динамически в WinFormsДинамически добавил SelectedValue DropDownList не работает

 ComboBox ddCntrl = new ComboBox(); 
     ddCntrl.Width = 100; 
     ddCntrl.Name="dd_" + tpObj.RowColId; 
     ddCntrl.DropDownStyle = ComboBoxStyle.DropDownList; 
     Dictionary<int, string> DC = new Dictionary<int, string>(); 

     DC[-1] = "N/A"; 
     DC[0] = "Y"; 
     DC[1] = "N"; 

     ddCntrl.DataSource = new BindingSource(DC,null); 
     ddCntrl.DisplayMember = "Value"; 
     ddCntrl.ValueMember = "Key"; 

     ddCntrl.SelectedIndex = ddCntrl.Items.IndexOf("N"); 
     TableLayoutPanel.Controls.Add(ddCntrl, 1, 1); 

Я попробовал пару вариант, чтобы установить выбранное значение ничего работает

Я попытался ниже вариантов, чтобы установить выбранное значение ddCntrl .SelectedValue = "N"; ddCntrl.SelectedIndex = ddCntrl.FindStringExact («N»)

+0

Что ddCntrl.Items.IndexOf ("N"); возвращается? Я думаю, что он не возвращает правильное значение. Посмотрите на: http://stackoverflow.com/questions/12608189/setting-selected-item-in-combobox-bound-to-dictionary –

+0

он возвращает значение индекса -1 –

+0

Смотрите это: http: // stackoverflow .com/questions/12608189/setting-selected-item-in-combobox-bound-to-dictionary –

ответ

1

Вам нужно будет кое-что изменить. Во-первых, если вы используете этот код в конструкторе, вам нужно будет переместить его на Load или Shown.

И установите индекс после добавления comboBox к панели. ddCntrl.FindStringExact("N") должна работать нормально:

ComboBox ddCntrl = new ComboBox(); 
ddCntrl.Width = 100; 
ddCntrl.Name = "dd_"; 
ddCntrl.DropDownStyle = ComboBoxStyle.DropDownList; 

Dictionary<int, string> DC = new Dictionary<int, string>(); 
DC[-1] = "N/A"; 
DC[0] = "Y"; 
DC[1] = "N"; 

ddCntrl.DataSource = new BindingSource(DC, null); 
ddCntrl.DisplayMember = "Value"; 
ddCntrl.ValueMember = "Key"; 

tableLayoutPanel.Controls.Add(ddCntrl, 1, 1); 
ddCntrl.SelectedIndex = ddCntrl.FindStringExact("N"); 
+0

Спасибо, добавив combobox к панели ddCntrl.SelectedIndex = ddCntrl.FindStringExact («N») работает –

0

Поскольку вы привязка к словарю вы должны установить выбранный элемент следующим образом: ddCntrl.SelectedItem = DC[1];

Если вы хотели бы установить в зависимости от отображаемого значения (которое я на самом деле не предлагаю) вам нужно найти его в DC, а затем установить его на ddlCntrl

+0

Он не работает, нам нужно делать иначе, чем с динамически созданных элементов управления? –

+0

oh i see :) Пожалуйста, установите выбранное значение/элемент или индекс, который вы хотите, после добавления его в tablelayout :)) –

Смежные вопросы