2010-03-31 49 views
1

我想實現空間的一些自定義行爲ListView。基本上我想切換光標下的項目選擇的狀態 - 這應該是相當簡單的覆蓋.net中的空格鍵的默認行爲WinForms ListView

this.FocusedItem.Selected = !this.FocusedItem.Selected; 

但很可惜,它也做了默認的動作,這是選擇關注項目。通過這種方式,我無法「取消」選中重點項目。我查找過類似的問題,他們建議使用PreviewKeyDown事件,其中我將處理該鍵並禁止ListView執行其默認操作。但是,PreviewKeyDown事件參數沒有「處理」屬性,所以我不能'吃'這個鍵。

回答

1

這個工作,你想:

private void listView1_KeyDown(object sender, KeyEventArgs e) { 
    if (e.KeyData == Keys.Space) { 
    listView1.FocusedItem.Selected = !listView1.FocusedItem.Selected; 
    e.Handled = e.SuppressKeyPress = true; 
    } 
} 
+0

這個作品,謝謝。根據MSDN - http://msdn.microsoft.com/en-us/library/system.windows.forms.keyeventargs.suppresskeypress.aspx - 設置SuppressKeyPress也設置處理,所以只有「e.SuppressKeyPress = true」是必要的。 – Axarydax 2010-03-31 10:28:54