如何为当前未选中的列表框设置鼠标单击?

时间:2017-07-21 01:58:01

标签: c# listbox listboxitem

我想创建多个列表框,这些列表框仅在上一个列表框中单击某个项目后才会出现。因此,当我在listbox1中选择一个项目时,它会显示listbox2的项目,当我单击listbox2中的项目时,它会显示列表框3中的所有项目等。我可以单击listbox1中的项目以使其列出listbox2但之后我得到以下错误:对象引用未设置为对象的实例。如何在单击前一个列表框中的项目后设置多个列表框才能显示而不会出现错误?

    private void Form1_Load(object sender, EventArgs e)
    {
        listBox1.Items.Add(1);
        listBox1.Items.Add(2);
        listBox1.Items.Add(3);
    }

    private void Form1_MouseClick(object sender, MouseEventArgs e)
    {
        string curItem1 = listBox1.SelectedItem.ToString();

        if (curItem1 == "1")
        {
            listBox2.Items.Add(1);

            if(curItem1 == "1")
            {                
                listBox3.Items.Add(1);
            }
            string curItem2 = listBox2.SelectedItem.ToString();
            ///This is where I get the error!
        }
    }

2 个答案:

答案 0 :(得分:0)

添加后需要选择项目:

private void Form1_MouseClick(object sender, MouseEventArgs e)
    {
        string curItem1 = listBox1.SelectedItem.ToString();

        if (curItem1 == "1")
        {
            listBox2.Items.Add(1);
            listBox2.SelectedIndex = 0;  //<= This selects the item

            if (curItem1 == "1")
            {
                listBox3.Items.Add(1);
            }
            string curItem2 = listBox2.SelectedItem.ToString();
            ///This is where I get the error!
        }
    }

我也会在这里放一些支票,例如。第一行可能是:

if (listBox1.SelectedItems.Count == 0) return;

答案 1 :(得分:-1)

您在分配之前引用了 listBox2.SelectedItem ,这就是您收到异常的原因,为解决此问题,只需指定listbox2的 SelectedItem 属性:

string curItem1 = listBox1.SelectedItem.ToString();

if (curItem1 == "1")
{
    listBox2.Items.Add(1);
    listBox2.SelectedItem = 1;
}