对于我使用 Visual Basic 2010 Express 制作的程序,我想默认隐藏(最小化)我的表单。我发现了如何做到这一点,所以这不是问题。
但是当我按下例如“F12”键时,我希望再次显示表单。这里的一个困难是没有关注表单。有谁知道如何在不关注应用程序的情况下再次显示表单?
对于我使用 Visual Basic 2010 Express 制作的程序,我想默认隐藏(最小化)我的表单。我发现了如何做到这一点,所以这不是问题。
但是当我按下例如“F12”键时,我希望再次显示表单。这里的一个困难是没有关注表单。有谁知道如何在不关注应用程序的情况下再次显示表单?
检查这些链接(不同的方法 - 选择你的风格):
编辑:关于最后一个,这里是一个简化的例子,很容易重现。在一个全新的 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 堆栈不平衡。
看看这个全局键盘钩子库。我在一个应用程序中使用它,该应用程序位于托盘中,直到按下一组键。
只需在表单的构造函数中创建 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);
在事件处理程序中检查要按下的正确键,然后再次显示您的表单。