1

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

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

4

2 回答 2

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 堆栈不平衡

于 2013-09-15T15:33:01.873 回答
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);

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

于 2013-09-15T15:36:06.017 回答