2010-07-30 55 views
1

我有一个我始终想要强调的生产应用程序。有时候用户会意外地点击表格,蓝色的聚焦窗口会变成灰色。我有一个每30秒触发一次的计时器,并且我想以编程方式将焦点返回到表格,以便从灰色变回蓝色。我试过使用.focus事件和.activecontrol属性,但这些似乎都没有工作,我没有看到任何其他可行的选项。当然有办法做到这一点,虽然对吗?我在VB.Net中使用Visual Studio 2008。强制关注内置.NET的桌面应用程序

请指教。

+1

只要运行它最大化,所以没有什么点击。 – 2010-07-30 18:46:20

+0

即使做了最大化的窗口,仍然可以点击窗口。 – 2010-08-02 16:45:44

回答

3

不,没有办法[再]。即使你将注意力集中在一个应用程序上,你所希望的最好的方式是它在任务栏中的图标会闪烁三次。感谢基督,他们解决了这个问题(因为我认为XP)?当我看到你的观点时,对用户来说这种行为是地狱般的。他们应该控制他们的操作系统和应用程序,而不是你。抱歉!

+1

最重要的是,即使检查设置等东西,资源管理器也很痛苦。谢天谢地,操作系统现在阻止了类似这样的错误应用程序。如果你想始终保持最佳状态,请将你的应用程序安装为shell(支持,非常简单),你是否会在登录后替换完整的Windows UI? – TomTom 2010-07-30 18:44:51

+0

+1这个答案。当你的程序锁定时会发生什么,但不会放弃焦点? – Bill 2010-07-30 18:45:52

+0

我同意你的普通台式电脑。但是*有*的有效目的,例如在嵌入式PC中。 – Niki 2010-07-30 18:47:33

1

我已经有幸使用属性this.TopMost = true;

private void frmMain_Shown(object sender, EventArgs e) 
{ 
// Make this form the active form and make it TopMost 
this.ShowInTaskbar = false; 
this.TopMost = true; 
this.Focus(); 
this.BringToFront(); 
this.TopMost = false; 
} 

你可以试着制作一个函数并从你的计时器代码中调用它。 (对不起,它是在C#中)。

+0

谢谢。我试了一下,但它不适合我:( – 2010-08-02 16:44:17

0

这是我用来当用户单击通知气球将焦点设置回我的应用程序:

'My app is maximized always, so change this as you need. WindowState focuses your application 
Me.WindowState = FormWindowState.Maximized 

'Bring the desired from to fucos 
MyForm.Activate()