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