C# 为什么我不能在Winforms中可靠地聚焦控件?

C# 为什么我不能在Winforms中可靠地聚焦控件?,c#,winforms,setfocus,C#,Winforms,Setfocus,我有一个表单,它由左侧的各种控件组成,主体是一个浏览器窗口,显示由其他控件创建的HTML文件。生成文件后,我试图将焦点设置到浏览器窗口上,以便滚轮工作 在每一次奇数尝试中,这种方法都有效,而在偶数尝试中则无效 有两个代码路径,都从生成输出的按钮单击开始,都归结为: Browser.Focus(); Browser.DocumentText = RenderAsHTML(); 第一个按钮也会更新左侧的列表框,第二个按钮则不会。奇偶模式与按下的按钮无关 这到底是怎么回事 尝试下面的回答,然后向它扔

我有一个表单,它由左侧的各种控件组成,主体是一个浏览器窗口,显示由其他控件创建的HTML文件。生成文件后,我试图将焦点设置到浏览器窗口上,以便滚轮工作

在每一次奇数尝试中,这种方法都有效,而在偶数尝试中则无效

有两个代码路径,都从生成输出的按钮单击开始,都归结为:

Browser.Focus();
Browser.DocumentText = RenderAsHTML();
第一个按钮也会更新左侧的列表框,第二个按钮则不会。奇偶模式与按下的按钮无关

这到底是怎么回事

尝试下面的回答,然后向它扔东西,我发现了一些非常有趣的东西:

系统认为窗口是聚焦的。即使不接受滚轮消息,Browser.Focused也会返回true

更奇怪的是,我做了一个测试,在其中抛出一个显示一些变量的消息框,当该框被清除后,返回屏幕,滚轮100%的时间都在工作。仅删除MessageBox.Show行会将其返回到旧行为。

打开会发现一个类似的问题,最好的答案是您必须

 ActiveControl = yourControlThatReceiveFocus;

可能重复:实际再现问题的后代码。@GertArnold:这也在谈论如何聚焦某个东西,但那里的答案产生了相同的问题,因此它不是我的谜团的答案。这产生的结果与控件每隔一次获得聚焦的结果完全相同。