3
我遇到與winforms競爭條件的問題。Winform ListViewItem檢查狀態切換
listViewCollections.ItemChecked += foo //Somewhere
void foo(object sender, ItemCheckedEventArgs e)
{
if (e.Item.Checked == false) return;
bool flag = bar(e.Item.Index);
if (flag) {
MessageBox.Show(...)
e.Item.Checked = false;
}
}
有時消息框會顯示兩次。什麼是正確的方法來做到這一點?提前致謝!
你是否以編程方式將項目設置爲檢查?我可以重現您的問題的唯一方法是將多個項目設置爲以編程方式進行檢查。 – kevev22 2010-10-08 20:17:49
是的,實際上就在第一個if子句後面有一個循環清除(設置爲false)同一個ListView中的其他複選框。我不認爲這是相關的。我希望有些事件會被解僱,如果有條件的話,會被第一個事件抓住。 – Gleno 2010-10-08 22:14:05
也許這將有助於:http://msdn.microsoft.com/en-us/library/c5kehkcz(v=VS.100).aspx – kyndigs 2010-10-11 13:42:02