1
我有3个列表框,当选择其中1个时,我想取消选择其他列表框。我怎样才能做到这一点? 我曾尝试将聚焦属性设置为false,但c#不允许分配给聚焦属性。如何在选择1时取消选择其他列表框
我有3个列表框,当选择其中1个时,我想取消选择其他列表框。我怎样才能做到这一点? 我曾尝试将聚焦属性设置为false,但c#不允许分配给聚焦属性。如何在选择1时取消选择其他列表框
假设您有三个列表框,请执行以下操作。当特定列表框改变选择时,此代码将清除每个其他列表框的选择。您可以通过设置其SelectedIndex = -1
来清除列表框选择。
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedIndex > -1)
{
listBox2.SelectedIndex = -1;
listBox3.SelectedIndex = -1;
}
}
private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox2.SelectedIndex > -1)
{
listBox1.SelectedIndex = -1;
listBox3.SelectedIndex = -1;
}
}
private void listBox3_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox3.SelectedIndex > -1)
{
listBox1.SelectedIndex = -1;
listBox2.SelectedIndex = -1;
}
}
的if (listBox#.SelectedIndex > -1)
是必要的,因为通过代码设置列表框中的SelectedIndex
也将触发其SelectedIndexChanged
事件,否则就会导致所有的列表框清除选择他们中的任何一个时间。
编辑:
或者,如果您只有形式这三个列表框,那么你可以合并成一个方法。将所有三个列表框链接到此事件方法:
private void listBox_SelectedIndexChanged(object sender, EventArgs e)
{
ListBox thisListBox = sender as ListBox;
if (thisListBox == null || thisListBox.SelectedIndex == 0)
{
return;
}
foreach (ListBox loopListBox in this.Controls)
{
if (thisListBox != loopListBox)
{
loopListBox.SelectedIndex = -1;
}
}
}
为什么要更改焦点属性?如果要更改的是选择。这里是焦点在3.5 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.focus(v=VS.90).aspx – Tipx