根据先前comboBox的选定项更改comboBox选项

时间:2015-11-19 08:34:22

标签: c# winforms

如何更改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中显示任何内容。

4 个答案:

答案 0 :(得分: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");
        }

    }

答案 1 :(得分:0)

找到解决方案。不得不将if语句写入(comboBox2_SelectedIndexChanged)而不是Form_Load。

答案 2 :(得分: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");
    }
}

答案 3 :(得分:0)

一些代码审查。

此代码更易于阅读,并且比多个if语句更易于管理。另外,不要重复清除组合框4,只要在每次在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;
    }
}