2015-04-30 42 views
0

如果您有一個帶有CheckOnClick = False的CheckedListBox,當檢查該項目時,ItemCheck事件不會觸發如果它是第一次被選中的......暫停...然後再次點擊以檢查該項目。但如果這是一個快速雙擊,沒有暫停,事件將觸發。CheckedListBox ItemCheck事件僅在快速雙擊時觸發?

這是正確的行爲嗎?無論點擊速度如何,ItemCheck事件都會觸發,對吧?

我相信這是奇怪的行爲,很容易複製:

  1. 創建一個新的winform
  2. 添加CheckedListBox,並添加一些項目給它。 (將默認檢查點擊爲假)
  3. 添加標籤
  4. 訂閱ItemCheck事件和SelectedIndexChanged使每個事件觸發時標籤的文本更改。

有沒有人遇到過這個問題?

編輯2015年5月1日

的問題是,SelectedIndexChanged事件獲取ItemCheck事件之後直接被解僱。這意味着它在每個ItemCheck之前被觸發,然後立即被觸發。標籤不會顯示更改,因爲它發生得太快,但切換到MessageBox.Show()會驗證它是否在後面直接被觸發。

+0

我無法重現該問題。如果通過一次點擊選擇項目,然後由另一個項目進行檢查,則ItemCheck事件會觸發事件。 –

回答

1

問題是,SelectedIndexChanged事件在ItemCheck事件之後被直接觸發。這意味着它在每個ItemCheck之前被觸發,然後立即被觸發。標籤不會顯示更改,因爲它發生得太快,但切換到MessageBox.Show()會驗證它是否在後面直接被觸發。

0

根據MSDN checkedlistbox.checkonclick閱讀備註部分)檢查點擊屬性控制是否在第一次點擊或第二次點擊時檢查列表框項目。在你的情況下點擊檢查是flase它需要兩次點擊檢查項目,因此發射ItemCheck事件

+0

我相信你錯過了解這個問題。這不是關於是否檢查。我正在討論ItemCheck事件,以及如果您使用兩次單擊而不是觸發事件的雙擊,那麼它將不會觸發。 – Cody

相關問題