WebBrowser控件将焦点停止在richtextbox上

时间:2010-01-12 18:22:29

标签: c# winforms focus webbrowser-control richtextbox

我遇到WebBrowser组件的问题。出于某种原因,当我点击它时,它禁止我将注意力设置在richTextBox上。

我有两个几乎相同的形式。

第一种和第二种形式的主要区别在于,form1正在修改WebBrowser DocumentText,而form2正在使用webBrowser来显示临时文件的内容。

第一种形式工作得很好,WebBrowser并没有禁用对richTextBox的关注。但第二种形式是有问题的。当您单击WebBrowser组件而不是返回到richtextBox时,它再也不会通过Focus()方法获得焦点:(

2 个答案:

答案 0 :(得分:0)

我解决了它:)我添加了while循环等待,直到webBrowser.Document属性完全初始化。比我使用webBrowser.Document.CreateElement创建新的html元素,以及webBrowser.Document.Body.AppendChild将它们添加到文档中。 (我停止使用临时文件...)

答案 1 :(得分:0)

我遇到了同样的问题,并且根据你的回答,我提出了另一种适合我的解决方案。

我的解决方案与您的解决方案非常相似。 我有一个RichTextBox形式,它有文本和一个显示该文本的WebBrowser(为了将其合并到一个电子邮件中)。

因此,当我使用事件处理程序“TextChanged”更改RichTextBox中的文本时,我将HTML更新到WebBrowser中。但是,当我像你一样点击WebBrowser的主体时,我只能更改一个字符而WebBrowser会重新获得焦点。讨厌......

所以,经过长时间的搜索和你的回答,我想到了:我把焦点再次放在WebBrowser上,然后再放在RichTextBox上。这很有效!

private void RichTextBox1_TextChanged(object sender, EventArgs e)
{
    /* your stuff */
    WebBrowser1.Navigate("about:blank");
    WebBrowser1.Document.OpenNew(false);
    WebBrowser1.Document.Write(your_html);
    WebBrowser1.Focus();
    RichTextBox1.Focus();
}

瞧,它有效!

希望它会帮助别人!

相关问题