2009-02-06 3 views
0

응용 프로그램의 특정 영역에 표시되는 컨트롤 안에 데이터 격자보기가 있습니다.격자보기에 초점이 맞지 않아도 키 업 이벤트를 처리 할 수 ​​있습니까?

F5 키를 누르면이 활동 표를 새로 고침하고 싶습니다.

키 업 이벤트를 처리하여 액티비티 격자보기가 화면의 현재 포커스 된 요소 일 때이 작업을 수행하기는 쉽지만, 다른 요소 (예 : 메뉴 막대)가 마지막 일 때 분명히 작동하지 않습니다 그것은 클릭되었습니다.

이 경우에도 키 누르기를 추적하는 방법이 있습니까? 데이터 격자보기/컨트롤 외부의 코드에 액세스 할 수 없습니다.

이 답변은 명확한 아니오 일 수 있지만이 작업을 수행 할 때 분명히 뭔가를 놓치지 않았는지 확인하고 싶습니다. 당신은 시간에 초점을 수있는 다른 컨트롤에 액세스 할 수없는 경우

+0

이 컨트롤에 공개 새로 고침 방법이 있습니까? 그렇다면 폼의 모든 F5 키를 처리 할 수 ​​있어야하며 컨트롤 새로 고침 메서드 만 호출하면됩니다. – BFree

답변

0

번호

는 컨트롤에에서 키까지 메시지를 전달 할 수있는 방법이 없습니다.

0

컨트롤이있는 양식에서 일부 전역 키보드 이벤트 처리를 수행 할 수 있습니다.

폼에이 값을 추가하면 컨트롤에 보내기 전에 전역 키 이벤트를 가져올 수 있습니다.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    switch (keyData) 
    { 
     case Keys.F5: 
      // Send Refesh Event To Grid 
      return true; // Mark Key As Handled 

      // Add Any Extra Command Keys Here 
    } 

    return base.ProcessCmdKey(ref msg, keyData); // Resend To Base Function 
} 
0

이벤트 자체를 캡처 한 다음 데이터 표의 이벤트 처리기를 호출하려고 했습니까? 양식에서 키보드 이벤트를 알리기 위해 KeyPreview를 true로 설정해야합니다.

0

이 문제를 해결하는 가장 좋은 방법은 모든 키 누르기를 처리하는 기본 애플리케이션 양식을 얻는 것입니다. 이렇게하려면 기본 Form 속성 "KeyPreview"를 True로 설정하십시오.

그런 다음 모든 KeyUp 이벤트를 기본 폼에서 처리하십시오. 여기에서 KeyPreview에 대한 추가 정보 : http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx

관련 문제