2011-01-28 62 views
2

我上这需要一个表格的申请工作,在接收某些外部事件被激活。对于这作为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次,它给出了上述问题。表单将可见,但重点不会在那里,任务栏菜单将会失败。我们必须点击表格或闪烁的任务菜单栏才能获得焦点。

请让我知道如何解决这个问题。

+0

[C#强制形式聚焦]中可能重复(http://stackoverflow.com/questions/46030/c-force-form-focus) – 2011-01-28 13:31:38

回答

0

设置TopMost是不必要的;你打过电话的表格上Focus()

+0

是的,我已经试过对焦(),但没有奏效。 – GoGetIt 2011-01-31 05:26:33

0

你试过:

Form.BringToFront(); 

如果失败,则可能

Form.Visible = false; 

Minimize window 

Form.Visible=true; 

Restore window 

值得一试或许

+0

是的,我已经尝试了这些步骤还可以,但没有成功:( – GoGetIt 2011-01-31 05:23:54

0

我不完全知道它是什么你之后,但偷焦点从另一个应用程序is bad and should not be done/possible

+0

我得到了你的观点,但在最终的应用程序的用户,在那里他被点击和他的期望,尽快为他点击他应该有重点将知道该单击事件是通过回拨机制发送到我的表单应用程序。而在接收此事件,我必须激活形式,使用户拥有输入焦点,可以输入一些文字。 – GoGetIt 2011-01-31 05:26:13