2009-10-20 95 views
0

我有一個帶有複選框的列表框。如果用戶點擊旁邊的文本,我想阻止複選框更改其狀態。如果直接點擊小方框,我只希望它改變。當用戶點擊文本時,如何防止複選框狀態切換?

有沒有辦法在Windows窗體中做到這一點?

問候並提前致謝。

+0

你是否在具體討論CheckedListBox?因爲到目前爲止所有的答案都是專門針對CheckBox控件的。 – hometoast 2009-10-20 15:25:35

+0

感謝您的評論。不,我不是在談論CheckedListBoxes,我有一個帶有CheckBox的標準ListBox(和其他控件,所以我們必須選擇ListBox而不是CheckedListBox) – lakai 2009-10-27 07:29:50

回答

6

將文本放在標籤旁邊,而不是複選框的文本屬性。或者你可以創建自己的控件,它有一個複選框和一個標籤。然後,控件的Text屬性將填充標籤中的文本,並且您可以在控件中公開所有Checkboxes常規屬性。

+0

+1。那正是我想要建議的。 – David 2009-10-20 14:20:49

+0

好的,謝謝你,似乎沒有辦法創造我自己的控制 – lakai 2009-10-20 14:30:33

0

您可以始終不填寫複選框的Text屬性並製作完全獨立的Label控件。
否則,您可能必須在控件內部進行顯式命中測試,以查看它們是否碰到框或文本。然後,您將不得不擔心檢查邊框的位置,以及可能會改變框的位置的其他內容。

2

這是非常不規範的行爲。用戶希望在點擊標籤時能夠更改複選框,並且在不起作用時會感到沮喪,困惑和驚訝。我建議不要這樣做。 I'm not the only one

(是的,它是關於網頁設計,但許多概念也適用於桌面應用程序的設計也是如此。)

+0

聽起來更像是一個評論。 – 2009-10-20 14:27:31

+2

夠公平的。不過,我認爲足夠重要的是不要讓用戶感到驚訝,而應該將其作爲答案。 – 2009-10-20 14:30:54

0

我個人只能夠凍結的事情。 我通過處理Click和ItemChecked事件 來凍結複選框,並在修改狀態時將檢查狀態改回。 我使用菜單來檢查/取消選中項目,並讓用戶決定使用菜單或經典行爲。

乾杯,祝你好運。

相關問題