2013-04-30 3 views
0

У меня есть панель, на которой по умолчанию находятся два comboboxes и одна кнопка «+», которая создает два новых комбинированных блока ниже первого, я могу создать несколько (n) строк с два комбинированных блока и все работает, я просто не могу понять, как получить значения этих ящиков?Получить значения динамически созданных элементов управления (comboboxes)

Вот код для создания (добавления) контролирует

private void btnCreateFilter_Click(object sender, EventArgs e) 
{ 

    y += comboBoxHeight; 
    ComboBox cb = new ComboBox(); 
    cb.Location = new Point(x, y); 
    cb.Size = new Size(121, 21); 

    panelFiltri.Controls.Add(cb); 

    yDrugi += comboBoxHeight; 
    ComboBox cbSql = new ComboBox(); 
    cbSql.Location = new Point(xDrugi, yDrugi); 
    cbSql.Size = new Size(121, 21); 
    panelFiltri.Controls.Add(cbSql); 

    btnCancel.Location = new Point(btnCancel.Location.X, btnCancel.Location.Y + 25); 
    btnSaveFilter.Location = new Point(btnSaveFilter.Location.X, btnSaveFilter.Location.Y + 25); 
} 

И вот код, где я потерял:

private void btnSaveFilter_Click(object sender, EventArgs e) 
{ 
    int i; 
    foreach (Control s in panelFiltri.Controls) 
    { 

     //GOT LOST 

    } 
} 

ответ

1

Вы можете получить текст в ComboBox, как

private void btnSaveFilter_Click(object sender, EventArgs e) 
{ 
    foreach (Control control in panelFiltri.Controls) 
    { 
     if (control is ComboBox) 
     { 
      string valueInComboBox = control.Text; 
      // Do something with this value 
     } 
    } 
} 
+0

вы должны бросить контроль в Combo Box перед тем, как его значение, также следует проверять тип первого, –

+0

Это правильное решение, после редактирования кода для литья и проверки :) –

+0

Спасибо вам обоим! Один вопрос, значения теперь выбраны случайным образом ... как я могу сделать так, чтобы получить значения из 1-го поля со списком до последнего? Теперь я получаю значение от 2-го, 1-го, 3-го и 4-го блоков со списком (это не порядок 1-го, 2-го, 3-го, 4-го). – SuperManSL

0

Я действительно не знаю, что вы пытаетесь достичь .. . может быть, это поможет вам вместе ...

private void btnSaveFilter_Click(object sender, EventArgs e) 
{ 
    foreach (ComboBox comboBox in panelFiltri.Controls) 
    { 
    var itemCollection = comboBox.Items; 
    int itemCount = itemCollection.Count; // which is 0 in your case 
    } 
} 
Смежные вопросы