2011-11-17 4 views
1

Я использую WebBrowser, и когда я пытаюсь позвонить .Navigate(some_local_html), в моем браузере ничего не отображается. Если я тогда использую MessageBox.Show(), то пока отображается сообщение, я могу видеть свой html в браузере. Но когда я закрываю MessageBox, html снова отсутствует.C# WebBrowser не показывает контент

Я пробовал Try-catch, но ошибок не было.

Я пытался установить код по умолчанию на webBrowser управления, и нет никакого результата. Я ничего не вижу.

ПОСТАНОВИЛИ:

Это была не сама нить, но какая-то нить. Я добавил следующий код:

Stream stream = null; 
webBrowser1.DocumentStream = stream; 

и забыл его удалить ... Это повод. Спасибо всем!

+0

может у показать некоторые из кода, который вы написали ... –

+1

Что произойдет, если вы проверить его с новым проектом, падение WebBrowser там, а затем перейдите к локальному HTML-файла? – CodeCaster

+1

MessageBox запускает цикл сообщений, позволяя браузеру рисовать себя. Не вставляйте петлю в поток пользовательского интерфейса. –

ответ

1

Не уверен, что это вообще поможет, но похоже, что что-то перерисовывается в фоновом режиме, так как когда вы помещаете ящик сообщений, я уверен, что он спит в потоке, так что ничего не может произойти до тех пор, пока оно не будет выполнено, поэтому все, что переписывается, временно остановится.

Если у вас есть что-то в этом потоке, освежающее или перерисовывающее часто, что может вызвать проблемы, попробуйте добавить кнопку в свою форму, которая делает thread.sleep (1000), чтобы увидеть, правильно ли отображает ваш браузер на секунду ,

1

Было бы полезно узнать, где вы вызываете свои функции навигации и MessageBox. Я быстро создал тест, чтобы увидеть, могу ли я произвести аналогичный результат, но приведенный ниже код работал точно так, как ожидалось.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     this.webBrowser1.Navigate("http://www.google.com"); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show("Some Text"); 
    } 
} 
Смежные вопросы