我上这需要一个表格的申请工作,在接收某些外部事件被激活。对于这作为POC我已经创建了以下示例代码。形式焦点问题
FormRecvr:
1)创建一个简单的形式与TextBox控件
2)有一些端口上的TCP听者listning接收事件
3)在事件的接收,激活形式即将它带到前面,使其具有焦点,用户可以键入一些文本。
FormSender:
1)具有两个按钮控件创建一个简单的形式中,一个通过发送通过插座和其他退出该应用程序的事件来激活RCVR形式。
2)使用listner创建一个TCP套接字并发送事件。
执行这个简单的程序后,我注意到接收器窗体没有得到焦点。该应用的任务栏菜单不断闪烁。该窗口不是前景。
我已经尝试了以下内容以使其成为重点。
this.TopMost = TRUE;
this.Activate();
this.TopMost = false;
我甚至试过SetForegroundWindow Win32 API。即使这样也行不通。它工作不休息。 10次中的8次,它给出了上述问题。表单将可见,但重点不会在那里,任务栏菜单将会失败。我们必须点击表格或闪烁的任务菜单栏才能获得焦点。
请让我知道如何解决这个问题。
[C#强制形式聚焦]中可能重复(http://stackoverflow.com/questions/46030/c-force-form-focus) – 2011-01-28 13:31:38