我们在C#WinForms应用程序中加载了第三方控件。
当我们在第三方ActiveX控件上调用方法时,它会异步窃取焦点。例如:
// This call causes 3rd party to spawn a thread and steal focus
// milliseconds later.
foo3rdParty.DoSomething();
有没有办法阻止控件窃取焦点?
答案 0 :(得分:3)
如果控件有一个GotFocus()事件(控件在每次窃取焦点时都正确引发),你可以附加一个处理程序并将焦点设置回最后一个具有焦点的控件(或者确定按钮或其他)。
如果有人在中间输入文本框,这可能会产生奇怪。我的解决方案是把钱交给愿意做15分钟工作来帮助我的人。
答案 1 :(得分:3)
如果这个邪恶的小控件不是可见的,你可以把它放在一个看不见的形式上并在那里调用DoSomething()。然后,谁在乎它是否抓住焦点?
答案 2 :(得分:2)
您可以尝试这种粗略的方法:
Form.ActiveControl
。答案 3 :(得分:2)
啊。您可能已经考虑过这个问题,但是当它试图获得焦点时,您是否可以在期间(或猜测)禁用控件的窗口,而不会损害用户体验?