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