2015-08-04 3 views
-3

ИТАК в моем переключатель (comboBox1.SelectedIndex) в случае 1 это создает некоторые метки и ComboBoxes динамически и добавляет их к tabPage1, но я хочу, чтобы эти динамически создаваемые элементы управления в быть удалены, когда случай 2 выбранC# Как удалить динамически создаваемые элементы управления коммутатором

public void comboBox2_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      switch (comboBox2.SelectedIndex) 
      { 
       case 0: 
        { 
         //do nothing. 
         break; 
        } 
       case 1: 
        { 
         Label label16 = new Label(); 
         tabPage1.Controls.Add(label16); 
         label16.Left = 465; 
         label16.Top = 111; 
         label16.Text = "Time:"; 
         label16.Size = new Size(60, 13); 

         ComboBox comboBox13 = new ComboBox(); 
         tabPage1.Controls.Add(comboBox13); 
         comboBox13.Left = 533; 
         comboBox13.Top = 108; 
         comboBox13.Size = new Size(104, 21); 
         comboBox13.DropDownStyle = ComboBoxStyle.DropDownList; 

         comboBox13.DisplayMember = "Text"; 
         comboBox13.ValueMember = "Value"; 
         var ComboBox13Items = new[] { 
         new { Text = "1 Second", Value = "1" }, 
         new { Text = "2.5 Seconds", Value = "2.5" }, 
         new { Text = "5 Seconds", Value = "5" }, 
         new { Text = "7.5 Seconds", Value = "7.5" }, 
         new { Text = "10 Seconds", Value = "10" } 
         }; 
         comboBox13.DataSource = ComboBox13Items; 
         break; 
        } 
       case 2: 
        { 
         foreach (Control TimeLabel in tabPage1.Controls.OfType<Controls>()) 
         { 
          if (TimeLabel.Name == "label16") 
           tabPage1.Controls.Remove(TimeLabel); 
         } 

         foreach (Control TimeComboBox in tabPage1.Controls.OfType<Controls>()) 
         { 
          if (TimeComboBox.Name == "comboBox13") 
           tabPage1.Controls.Remove(TimeComboBox); 
         } 

         break; 
        } 

Я также попытался изменить OfType<Controls> к OfType<Label> и OfType<ComboBox>, до сих пор не повезло:/

+0

Создает элементы управления один раз и устанавливает их видимыми или скрытыми на основе выбранного индекса. – cdsln

+0

Ваш код создания не создает их с именем. Кодовое имя фактически не заселено в «имя» элемента управления, поэтому оно не будет соответствовать им, потому что все имена пустые – BugFinder

+0

@cdsln хорошо ... это хорошая идея, спасибо – user3542613

ответ

1
Label label16 = new Label(); 
         tabPage1.Controls.Add(label16); 
         label16.Left = 465; 
         label16.Top = 111; 
         label16.Text = "Time:"; 
         label16.Size = new Size(60, 13); 

Не создает кнопку «label16», которая создает неназванную кнопку.

вам нужно будет добавить

labal16.Name = "label16"; 

имена должны быть уникальными, сохранить счетчик или что-то, если Theres шанс, что будет добавлено более одного набора и использовать счетчик, чтобы сделать уникальное имя.

+0

да работало отлично, но теперь проблема в том, когда я хочу использовать 'comboBox13.SelectedValue', он говорит:' Имя comboBox13 'не существует в текущем контексте 'поэтому я не могу получить значения из comboBoxes, которые создаются динамически ..? – user3542613

+0

Конечно, вы можете, но, comboBox - это временное имя, например, женщины дают свои имена, если они не хотят, чтобы их рассказывали о своих детях. Вы назвали ваш combobox. Будет ли только один из этих ящиков одновременно или, может быть, более одной партии? – BugFinder

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