Элемент управления WebBrowser перестает фокусироваться на richtextbox

У меня проблема с компонентом WebBrowser. По какой-то причине, когда я нажимаю на него, он не позволяет мне установить фокус на richTextBox.

У меня 2 почти одинаковые формы.

Основное различие между первой и второй формой заключается в том, что форма1 изменяет WebBrowser DocumentText, а форма2 использует веб-браузер для отображения содержимого временного файла.

Первая форма работает очень хорошо, WebBrowser не отключает фокус на richTextBox. А вот вторая форма проблематична. Когда вы нажимаете на компонент WebBrowser, а затем возвращаетесь в richtextBox, он никогда больше не получает фокус с помощью метода Focus() :(


person Klinki    schedule 12.01.2010    source источник
comment
Святое дерьмо! Это самый длинный «вопрос», который я когда-либо видел. Может быть, вы можете сократить его до читаемых пропорций?   -  person Webleeuw    schedule 13.01.2010
comment
Вы не возражаете против рассматриваемого кода или описания проблемы?   -  person Klinki    schedule 13.01.2010


Ответы (2)


Я решил это :) Я добавил цикл while, который ждет, пока свойство webBrowser.Document не будет полностью инициализировано. Затем я использовал webBrowser.Document.CreateElement для создания новых html-элементов и webBrowser.Document.Body.AppendChild для добавления их в документ. (Я перестал использовать временный файл...)

person Klinki    schedule 24.01.2010

У меня была такая же проблема, и с вашим ответом я нашел другое решение, которое работает для меня.

Мое решение очень похоже на ваше. У меня есть в форме один RichTextBox с текстом и один WebBrowser, который отображает этот текст (чтобы включить его в электронное письмо).

Итак, когда я изменяю текст в RichTextBox с помощью обработчика событий «TextChanged», я обновляю HTML в 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();
}

И вуаля, это работает!

Надеюсь, это поможет кому-то!

person Georges0013    schedule 13.10.2014