2015-11-19 5 views
0

Как изменить comboBox опции в зависимости от выбранного элемента предыдущего comboBox? Я так пробовал, но похоже, что я делаю что-то неправильно!Изменить параметры comboBox в зависимости от выбранного элемента предыдущего comboBox

private void Form1_Load(object sender, EventArgs e) 
{ 
    // Virsraksts formai 
    this.Text = "Atpūtas vietas meklēšana"; 

    // Izvelieties valodu 
    comboBox1.Items.Add("Latviešu"); 
    comboBox1.Items.Add("Krievu"); 
    comboBox1.Items.Add("Angļu"); 
    comboBox1.Items.Add("Vācu"); 

    // Izveleties novadu 
    comboBox2.Items.Add("Zemgale"); 
    comboBox2.Items.Add("Latgale"); 
    comboBox2.Items.Add("Kurzeme"); 
    comboBox2.Items.Add("Vidzeme"); 

    // Izveleties atputas veidu 
    comboBox3.Items.Add("Slēpošana"); 
    comboBox3.Items.Add("Kalnā kāpšana"); 
    comboBox3.Items.Add("Sporta aktivitātes"); 
    comboBox3.Items.Add("Latvijas apskates objekti"); 

    // Izveleties atputas vietu 
    if(comboBox2.Text == "Zemgale") 
    { 
     comboBox4.Items.Clear(); 
     comboBox4.Items.Add("Jelgava"); 
    } 
    // Izveleties atputas vietu 
    if (comboBox2.Text == "Latgale") 
    { 
     comboBox4.Items.Clear(); 
     comboBox4.Items.Add("Daugavpils"); 
    } 

} 

Так в основном после выбора comboBox2 пунктов, он ничего не в comboBox4 шоу.

+0

У вас есть сообщения об ошибке? Что происходит и не происходит, когда вы выполняете? – Paul

+0

Ошибок нет, но не отображаются элементы comboBox4. –

+0

Я думаю, что проблема заключается в вашей инструкции if, вы должны проверить выбранный элемент, а не текст –

ответ

1

Попробуйте

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     // Izveleties atputas vietu 
     if(comboBox2.SelectedText == "Zemgale") 
     { 
      comboBox4.Items.Clear(); 
      comboBox4.Items.Add("Jelgava"); 
     } 
     // Izveleties atputas vietu 
     if (comboBox2.SelectedText == "Latgale") 
     { 
      comboBox4.Items.Clear(); 
      comboBox4.Items.Add("Daugavpils"); 
     } 

    } 
0

Найдено решение. Приходилось писать инструкции if в (comboBox2_SelectedIndexChanged), а не в Form_Load.

+0

Это ответ @ Даршан Патель дал вам. –

+0

Проверьте мой ответ, чтобы получить более удобный способ сделать это. – Paul

0

попробовать ниже код

public Form1() 
{ 
    InitializeComponent(); 
    comboBox2.Items.Add("Zemgale"); 
    comboBox2.Items.Add("Latgale"); 
    comboBox2.Items.Add("Kurzeme"); 
    comboBox2.Items.Add("Vidzeme"); 

    comboBox2.SelectedIndexChanged += comboBox2_SelectedIndexChanged; 
} 

void comboBox2_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (comboBox2.Text == "Zemgale") 
    { 
     comboBox4.Items.Clear(); 
     comboBox4.Items.Add("Jelgava"); 
    } 

    if (comboBox2.Text == "Latgale") 
    { 
     comboBox4.Items.Clear(); 
     comboBox4.Items.Add("Daugavpils"); 
    } 
} 
0

Немного обзора кода.

Этот код легче читать и более удобен, чем несколько операторов if. Кроме того, не повторяйте очистку combobox4, просто очистите его каждый раз, когда выбранный индекс изменился на combobox2?

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    comboBox4.Items.Clear(); 

    switch(comboBox2.SelectedText) 
    { 
     case "Zemgale": 
      comboBox4.Items.Add("Jelgava"); 
      break; 
     case "Latgale": 
      comboBox4.Items.Add("Daugavpils"); 
      break; 
    } 
} 
Смежные вопросы