【发布时间】:2014-11-18 07:03:32
【问题描述】:
这让我很困惑。
我编写了一个弹出框,其中包含一个托管在 WindowsFormsHost 内的 WinForms UserControl,而后者又托管在屏幕上显示的 Primitives.Popup 中。整个应用程序是 WPF,但这个控件是从早期用 WinForms 编写的应用程序中提取的。
弹出窗口由外部事件(来自 CTI 服务器的来电)激活。
UserControl 内部是一个文本框控件。当用户点击文本框时,我在 Popup 上调用 Focus 方法,然后在文本框上调用 Focus 方法。文本框获得焦点。我可以相当确定这一点,因为该框在单击后会显示一个光标,而且我有一个“GotFocus”事件处理程序,它会打印一条调试消息。
但是,如果在传入事件发生时有另一个程序处于活动状态,则在键盘上按下的任何键都会继续转到该程序,而不是文本框。只有当用户单击我的应用程序的另一部分(即弹出窗口之外的屏幕部分)使其成为活动程序,然后单击文本框时,文本框才能接收键盘输入。
我希望我已经提供了足够的信息,而不会被无数的细节压得喘不过气来。如果还有其他人需要为我指出正确的方向,我很乐意提供。
【问题讨论】:
标签: wpf winforms keyboard focus