在Visual Basic中按键显示表单

时间:2013-09-15 12:11:39

标签: vb.net winforms key-events

对于我使用Visual Basic 2010 Express制作的程序,我希望默认隐藏(最小化)我的表单。我发现了如何做到这一点,所以这不是问题。

但是当我按下“F12”键时,我希望再次显示该表格。这里的一个难点是没有关注表格。有没有人知道如何在不关注应用程序的情况下再次显示表单?

2 个答案:

答案 0 :(得分:1)

检查这些链接(不同的方法 - 选择你的风格):

编辑:关于最后一个,这是一个简化的例子,很容易重现。在一个全新的WinForms应用程序中,在表单上放一个计时器,在设计器中设置其Enabled = True,然后将以下内容粘贴到表单的代码中:

Public Class Form1
  Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Int32) _
                                                                        As Short

  Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    If GetAsyncKeyState(Keys.F12) Then Me.WindowState = FormWindowState.Normal
  End Sub
End Class

启动您的应用,最小化表单并按F12。这会带来你的表格。您可以专注于VS以外的其他内容,以确认它是按预期工作的。我尝试使用VS 2013 Premium RC和Google Chrome(其中F12提出了表单并打开了开发工具)。

考虑到代码的数量,与其他答案相比,这将是我最喜欢的方法。对于经验丰富的代码专家可能会发现的任何缺点 - 请随时发表评论。

注意:如果您使用链接中的功能签名,则会获得pinvoke stack imbalance

答案 1 :(得分:0)

看看这个全局键盘钩子库。我在托盘中使用它,直到按下某组键。

只需在表单的构造函数中创建GlobalKeyboardHook类的私有实例。

private GlobalKeyboardHook gkh = new GlobalKeyboardHook();

然后添加“钩住”键并连接事件处理程序

gkh.HookedKeys.Add(Keys.LControlKey);
gkh.HookedKeys.Add(Keys.RControlKey);
gkh.HookedKeys.Add(Keys.Down);

gkh.KeyDown += new System.Windows.Forms.KeyEventHandler(gkh_KeyDown);
gkh.KeyUp += new System.Windows.Forms.KeyEventHandler(gkh_KeyUp);

在事件处理程序中检查要按下的正确键,然后再次显示您的表单。