按下Print Screen时,Form Keydown事件不起作用

时间:2014-07-26 20:07:13

标签: c# winforms keydown printscreen

我正在尝试检测表单上的 Print Screen 键,但 Prtsc SysRq 等键不会触发{ {1}}事件..

KeyDown

我无法弄清楚,也许我真的很蠢。

2 个答案:

答案 0 :(得分:1)

可以做到,但这并不简单。您无法使用KeyPressKeyDown事件执行此操作:正如您所发现的那样,它不会使它们触发。

但你仍然可以用c#来做:你只需要使用Windows API。由于相关代码很长,我发布链接:

Capturing the Print Screen Key

顺便说一句,你并不愚蠢。 :)虽然这似乎应该有一个明显的,简单的答案,但它并没有:这真的很复杂。但它可以做到。

答案 1 :(得分:1)

在表单具有焦点时按下键时,键处理事件仅适用于 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

  • 我认为你的代码没问题,原因是你的表单在按下键时没有焦点。

  • 标签索引0已分配给表单中的任何其他控件,因此初始焦点将设置为该控件

抱歉,在C#中不太好,您可以参考http://converter.telerik.com/进行代码转换

相关问题