2014-07-26 3 views
2

내 양식에 인쇄 화면 키를 감지하기 위해 노력하고있어,하지만 키 PRTSC 및 SysRq를처럼 KeyDown 이벤트가 발생하지 않습니다 ..Form_Keydown 이벤트가 작동하지 않습니다

private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     // Trying to detect if it fires KeyDown, but it doesn't 
     MessageBox.Show(e.KeyValue.ToString()); 
    } 

나는 그것을 알아낼 수는, 어쩌면 내가

+0

[인쇄 화면 키를 어떻게 캡처합니까?] (http://stackoverflow.com/questions/1191479/how-do-i-capture-the-print-screen-key) – user287107

답변

1

이 그것을 할 수 있습니다 .. 정말 바보 해요,하지만 간단하지 않습니다. KeyPress 또는 KeyDown 이벤트를 사용하여 수행 할 수 없습니다. 발견 한대로 화재가 발생하지 않습니다.

하지만 여전히 C#으로 처리 할 수 ​​있습니다. Windows API 만 사용해야합니다. 관련 코드가 긴이기 때문에, 내가 링크를 게시하도록하겠습니다 :

Capturing the Print Screen Key

은 덧붙여, 당신은 바보 아니에요. :) 비록 이것이 분명하고 단순한 대답을 가져야 만하는 것처럼 보일지라도, 그렇게하지는 않습니다 : 이것은 진정으로 일어나기 복잡합니다. 그러나 그것은 할 수 있습니다.

+0

이유 아래 투표? – user3596113

0

키 처리 이벤트는 양식에 포커스가있는 동안 키를 누르면 에서만 작동합니다. Form 속성 이벤트 및 메서드는 http://www.tutorialspoint.com/vb.net/vb.net_forms.htm에 설명되어 있습니다. 다음 코드는 메시지 상자에 누른 키 이름 (vb.net)를 표시합니다

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 
     MsgBox(e.KeyCode.ToString) 
End Sub 
다음과 같은 코드를 사용하여 인쇄 화면 키의 보도를 추적 할 수

:

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 
    If e.KeyCode = Keys.PrintScreen Then 
     MsgBox("Print screen key is pressed") 
    End If 
End Sub 

참고 : - 기능 키를 통해 PrintScreen을 달성 한 랩톱에서는 작동하지 않습니다. 키 코드 참고로
:http://msdn.microsoft.com/en-in/library/aa243025(v=vs.60).aspx

  • 나는 이유는 키를 누르고있는 동안 양식에 초점을하지 않는다는 것입니다 코드에 아무 문제가 없다 생각합니다. 초기 초점은, 당신이 http://converter.telerik.com/을 참조 할 수 있습니다 C#에서

미안 해요 너무 좋지 않아 해당 컨트롤로 설정 있도록

  • 탭 지수 0는 형태로 다른 컨트롤에 할당 코드 변환

  • +0

    제가 실제로하려는 것은'HotKey Control'을 만드는 것입니다. 그래서 폼에 중점을두고 있습니다. – Joery

    +2

    @ joery : keyDown 이벤트는 포커스가있는 폼이 작동하는 경우에만 작동합니다. http://www.tutorialspoint.com/vb.net/vb.net_forms.htm (양식 이벤트 10) – Suji

    관련 문제