C# 为什么我不能在Winforms中可靠地聚焦控件?
我有一个表单,它由左侧的各种控件组成,主体是一个浏览器窗口,显示由其他控件创建的HTML文件。生成文件后,我试图将焦点设置到浏览器窗口上,以便滚轮工作 在每一次奇数尝试中,这种方法都有效,而在偶数尝试中则无效 有两个代码路径,都从生成输出的按钮单击开始,都归结为:C# 为什么我不能在Winforms中可靠地聚焦控件?,c#,winforms,setfocus,C#,Winforms,Setfocus,我有一个表单,它由左侧的各种控件组成,主体是一个浏览器窗口,显示由其他控件创建的HTML文件。生成文件后,我试图将焦点设置到浏览器窗口上,以便滚轮工作 在每一次奇数尝试中,这种方法都有效,而在偶数尝试中则无效 有两个代码路径,都从生成输出的按钮单击开始,都归结为: Browser.Focus(); Browser.DocumentText = RenderAsHTML(); 第一个按钮也会更新左侧的列表框,第二个按钮则不会。奇偶模式与按下的按钮无关 这到底是怎么回事 尝试下面的回答,然后向它扔
Browser.Focus();
Browser.DocumentText = RenderAsHTML();
第一个按钮也会更新左侧的列表框,第二个按钮则不会。奇偶模式与按下的按钮无关
这到底是怎么回事
尝试下面的回答,然后向它扔东西,我发现了一些非常有趣的东西:
系统认为窗口是聚焦的。即使不接受滚轮消息,Browser.Focused也会返回true
更奇怪的是,我做了一个测试,在其中抛出一个显示一些变量的消息框,当该框被清除后,返回屏幕,滚轮100%的时间都在工作。仅删除MessageBox.Show行会将其返回到旧行为。打开会发现一个类似的问题,最好的答案是您必须
ActiveControl = yourControlThatReceiveFocus;
可能重复:实际再现问题的后代码。@GertArnold:这也在谈论如何聚焦某个东西,但那里的答案产生了相同的问题,因此它不是我的谜团的答案。这产生的结果与控件每隔一次获得聚焦的结果完全相同。