当我运行我的VB.NET Winforms应用程序时,我不希望它从其他打开的应用程序中窃取焦点。仅供参考,我的应用程序是从命令行启动的,但这不应该有所作为。我见过问题577076,但这似乎不起作用。
这样做的最佳方式是什么?
答案 0 :(得分:4)
以下是我的工作:
我将以下代码添加到我的Form1.vb文件中:
Protected Overloads Overrides ReadOnly Property ShowWithoutActivation() As Boolean
Get
Return True
End Get
End Property
但仍然没有成功。
然后,我取消选中项目属性的“应用程序”选项卡上的“启用应用程序框架”复选框。
成功!!!
答案 1 :(得分:1)
实际上,ShowWithoutActivation可以正常工作,而无需禁用框架。我认为我的问题不起作用,直到我意识到隐藏主要表单在弹出窗体出现时引起焦点。因此,重点关注我正在使用的其他应用程序。如果遇到类似情况,请使用不透明度而不是隐藏。只需设置为0即可隐藏表单,将100设置为隐藏表单。这允许函数按照描述工作。
答案 2 :(得分:0)
在您链接的示例中,某些常量声明在方法范围之外。这是另一个适合您的版本:
protected CreateParams CreateParams {
get {
CreateParams baseParams = base.CreateParams;
const int WS_EX_NOACTIVATE = 0x08000000;
const int WS_EX_TOOLWINDOW = 0x00000080;
baseParams.ExStyle |= (int) (WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW);
return baseParams;
}
}
...
你必须把它翻译成VB.Net但是......