按下PrintScreen时,Form_Keydown事件不起作用



我试图检测打印屏幕键在我的形式,但键像PrtscSysRq不触发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());
    }

我想不出来,可能是我太笨了

这是可以做到的,但并不简单。你不能对KeyPressKeyDown事件这样做:正如你已经发现的那样,它不会使它们着火。

但是你仍然可以用c#来做:你只需要使用Windows api。因为相关代码很长,所以我发布了链接:

抓取打印屏幕键

顺便说一句,你并不笨。:)尽管这看起来应该有一个明显、简单的答案,但事实并非如此:这真的很复杂。但这是可以做到的。

键处理事件将只在窗体有焦点时按下键时起作用。表单属性事件和方法的描述见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/代码转换

相关内容

  • 没有找到相关文章

最新更新