我正在尝试检测表单上的 Print Screen 键,但 Prtsc 和 SysRq 等键不会触发{ {1}}事件..
KeyDown
我无法弄清楚,也许我真的很蠢。
答案 0 :(得分:1)
可以做到,但这并不简单。您无法使用KeyPress
或KeyDown
事件执行此操作:正如您所发现的那样,它不会使它们触发。
但你仍然可以用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/进行代码转换