我使用C#VS2008,WinForm應用程序 我在我的表單上有一個checkedlistbox控件(win-form應用程序) 在代碼中,我使用SetItemChecked檢查checkedlistbox中的一些項目(index,false)方法,並引發事件ItemCheck。 我也允許用戶檢查那個checkedlistbox中的項目,當用戶選中或取消選中項目時,它也會引發事件ItemCheck。 如何在ItemCheck事件中查找此事件發生的情況(通過代碼或通過用戶鍵盤/鼠標輸入)? 謝謝。C#checkedlistbox通過代碼和鼠標點擊來區分ItemCheck
1
A
回答
2
我認爲沒有一個簡單的方法來區分使用代碼的情況。
,想到的唯一的事情是通過使用一個全球性的表單變量:
public class Form1:Form
{
bool _isCodeClick = false;
.....
// Somewhere in your code
_isCodeClick = true;
checkedListBox1.SetItemChecked(index, true);
_isCodeClick = false;
.....
private void CheckedListBox1_ItemCheck(Object sender, ItemCheckEventArgs e)
{
if(_isCodeClick == true)
{
// Do processing for click by code
}
else
{
// Do processing for click by user
}
}
}
如果你去了這個解決方案記得要採取額外的步驟正確捕獲異常,可以繞過全局變量的復位到錯誤的狀態。
可能使用鍵盤和鼠標事件的高級操作,您可能會找到合理的方法來確定導致ItemCheck事件的原因,但有時某些解決方案太複雜並且不值得。
編輯:審查我的答案我覺得需要添加一點改變來減少這個esponse意味着的維護問題。
設置該布爾變量並調用SetItemChecked的代碼應該在一個單獨的功能進行封裝這樣
private void SetItemCheckedFromCode(int index, bool toSet)
{
try
{
_isCodeClick = true;
checkedListBox1.SetItemChecked(index, true);
}
finally
{
_isCodeClick = false;
}
}
相關問題
- 1. 區分機器人鼠標點擊和人類鼠標點擊
- 2. 區分鼠標雙擊和鼠標點擊wpf
- 3. C++鼠標點擊模擬代碼
- 4. 區分鼠標點擊和手指點擊角度
- 5. 谷歌通過鼠標點擊排序行的腳本代碼
- 6. 在鼠標面板區分點擊
- 7. jstree:左/中鼠標區分點擊
- 8. 通過鼠標點擊呼叫功能
- 9. Matplotlib:通過鼠標點擊圖表上的區域
- 10. 鼠標點擊面板跳過點擊
- 11. 釋放鼠標捕獲並讓鼠標點擊通過
- 12. 如何鼠標點擊和觸摸區分挖掘
- 13. 如何在javascript/jquery中區分鼠標點擊和.click()?
- 14. 如何通過鼠標點擊PyQT5來獲取DOM元素QWebView
- 15. JavaFX的ListView控件 - 通過鼠標點擊來選擇
- 16. 如何通過點擊鼠標來退出進程?
- 17. 如何通過點擊鼠標來破壞氣球?
- 18. WPF區分編碼SelectionChanged和鼠標SelectionChanged
- 19. 點擊和鼠標點擊有什麼區別?
- 20. CheckedListBox操作ItemCheck刪除項目?
- 21. CheckedListBox ItemCheck事件僅在快速雙擊時觸發?
- 22. 通過點擊鼠標點擊Chrome插件不起作用
- 23. InkCanvas:如何通過點擊鼠標右鍵點擊擦除
- 24. C++ winapi通過鼠標點擊子窗口到父窗口
- 25. 可靠的方式來取消ItemCheck事件在CheckedListBox
- 26. jquery - 既鼠標和點擊?
- 27. 通過單擊鼠標按鈕來繪製和存儲對象
- 28. 如何通過鼠標點擊和使用Javascript拖動來滾動圖像
- 29. 得到鼠標點擊的100px區域
- 30. 如何通過xaml和C#改變點擊鼠標的字體樣式?
布爾變量從未感覺不錯,但通常是正確的解決方案。 –
我感覺一樣,但我找不到更好的方法來做到這一點。也許操作的順序可以封裝在一個函數中。 – Steve