我有一個帶有複選框的列表框。如果用戶點擊旁邊的文本,我想阻止複選框更改其狀態。如果直接點擊小方框,我只希望它改變。當用戶點擊文本時,如何防止複選框狀態切換?
有沒有辦法在Windows窗體中做到這一點?
問候並提前致謝。
我有一個帶有複選框的列表框。如果用戶點擊旁邊的文本,我想阻止複選框更改其狀態。如果直接點擊小方框,我只希望它改變。當用戶點擊文本時,如何防止複選框狀態切換?
有沒有辦法在Windows窗體中做到這一點?
問候並提前致謝。
您可以始終不填寫複選框的Text屬性並製作完全獨立的Label控件。
否則,您可能必須在控件內部進行顯式命中測試,以查看它們是否碰到框或文本。然後,您將不得不擔心檢查邊框的位置,以及可能會改變框的位置的其他內容。
這是非常不規範的行爲。用戶希望在點擊標籤時能夠更改複選框,並且在不起作用時會感到沮喪,困惑和驚訝。我建議不要這樣做。 I'm not the only one。
(是的,它是關於網頁設計,但許多概念也適用於桌面應用程序的設計也是如此。)
聽起來更像是一個評論。 – 2009-10-20 14:27:31
夠公平的。不過,我認爲足夠重要的是不要讓用戶感到驚訝,而應該將其作爲答案。 – 2009-10-20 14:30:54
我個人只能夠凍結的事情。 我通過處理Click和ItemChecked事件 來凍結複選框,並在修改狀態時將檢查狀態改回。 我使用菜單來檢查/取消選中項目,並讓用戶決定使用菜單或經典行爲。
乾杯,祝你好運。
你是否在具體討論CheckedListBox?因爲到目前爲止所有的答案都是專門針對CheckBox控件的。 – hometoast 2009-10-20 15:25:35
感謝您的評論。不,我不是在談論CheckedListBoxes,我有一個帶有CheckBox的標準ListBox(和其他控件,所以我們必須選擇ListBox而不是CheckedListBox) – lakai 2009-10-27 07:29:50