2012-12-13 96 views
1

我在啓用了Checkbox es的窗體上有ListView。這裏有一個簡單的例子程序:拖動選擇時ListView複選框的不正常行爲

[STAThread] 
static void Main() 
{ 
    var form = new Form(); 
    var listView = new ListView() { 
     Dock = DockStyle.Fill, CheckBoxes = true, View = View.List }; 
    listView.Items.Add("a"); 
    listView.Items.Add("b"); 
    listView.Items.Add("c"); 
    form.Controls.Add(listView); 
    Application.Run(form); 
} 

如果你運行這個程序,嘗試拖動選擇兩個或三個ListView項目。這工作正常。但現在再試一次,「意外」釋放你的鼠標按鈕在CheckBox之上。

結果是,鼠標光標本身下方的CheckBox不受影響,但所有其他選定項目都會根據其中一個CheckBox的狀態進行檢查/取消選中。最終用戶發現這種行爲不穩定,我同意。

有沒有簡單的方法來壓制這樣的意外CheckBox當拖動選擇ListView項目時發生變化?

+0

+1的實際發佈一個完整的程序,任何人都可以複製和粘貼跑!更何況...這是非常有趣的。 –

回答

0

您可以試試Better ListView Express - 它是免費的,用託管代碼和相當成熟的控件重寫。

常規.NET ListView的複選框行爲和其他毛刺在此處是固定的。例如,複選框完全是動畫(熱和壓狀態),甚至可以有單選按鈕...

該控件甚至可以在商業上使用。還有一個支持三態複選框的full version

複選框在每個視圖中都受支持,而不僅僅是詳細信息。

enter image description here