2010-03-31 5 views
1

의 사용자 정의 동작을 구현하고 싶습니다. 키를 ListView에 입력하고 싶습니다. 포커스 항목을 선택 입니다.net WinForms ListView에서 스페이스 키의 기본 동작을 재정의하십시오.

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

하지만 슬프게도, 그것은 또한 수행의 기본 동작, 매우 간단합니다 - 기본적으로 나는 커서 아래 항목의 선택 상태를 전환하고 싶습니다. 이렇게하면 집중된 항목을 '선택 해제'할 수 없습니다. 나는 비슷한 문제를 찾았으며 그들은 PreviewKeyDown 이벤트를 사용하는 것이 좋습니다.이 이벤트에서는 키를 처리하고 ListView가 기본 동작을 수행하지 못하도록합니다. 그러나 PreviewKeyDown 이벤트 인수에는 "처리 된"속성이 없으므로이 키를 '먹을 수 없습니다'.

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

답변

1

일했다. MSDN에 따르면 - http://msdn.microsoft.com/en-us/library/system.windows.forms.keyeventargs.suppresskeypress.aspx - SuppressKeyPress 설정은 Handled도 설정하므로 "e.SuppressKeyPress = true"만 필요합니다.
+0

, 감사 : 당신이 원하는대로 – Axarydax

관련 문제