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

C# 如何为当前未选中的列表框设置鼠标单击?,c#,listbox,listboxitem,C#,Listbox,Listboxitem,我想创建多个列表框,这些列表框仅在单击上一个列表框中的某个项目后显示。因此,当我在listbox1中选择一个项目时,它会显示listbox2的项目,当我在listbox2中单击一个项目时,它会显示列表框3的所有项目,等等。我可以在listbox1中单击一个项目,使其进入listbox2,但在这之后,我会出现以下错误:对象引用未设置为对象的实例。如何设置多个列表框,以便在单击之前列表框中的某个项目后显示,而不会出现错误 private void Form1_Load(object send

我想创建多个列表框,这些列表框仅在单击上一个列表框中的某个项目后显示。因此,当我在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!
        }
    }

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

string curItem1 = listBox1.SelectedItem.ToString();

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

添加项目后,您需要选择该项目:

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;