.NET WebBrowser Control и обновление

У меня есть простая форма WinForm с элементом управления WebBrowser, который отображает изображение из Интернета. Изображение обновляется в соответствии с таймером 1.
Он работает нормально, пока я не нажму F5 или не воспользуюсь параметром «Обновить» в контекстном меню браузера. Затем я получаю пустую страницу, и мне нужно перезапустить программу.
Почему?
Я хочу иметь возможность обновлять вручную, если это необходимо, не дожидаясь Timer1.
Есть предложения?
I я использую Visual Basic Express 2010.

 Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        WebBrowser1.DocumentText = "<html><body><img src='http://example.com/image.jpg'></body></html>"
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        WebBrowser1.Refresh()
    End Sub
End Class

person mcu    schedule 31.03.2013    source источник


Ответы (1)


Запись в DocumentText не меняет Url, и Url требуется при обновлении, поэтому, когда вы нажимаете F5, браузер обновляет about:blank. Мне действительно было интересно, что .Refresh() работал на вас.

Вы хотите что-то вроде:

Private Shared ReadOnly about_blank As Uri = New Uri("about:blank")

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    WebBrowser1.Url = about_blank
End Sub

Private Sub WebBrowser1_Navigated(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated
    If e.Url = about_blank Then
        WebBrowser1.Document.Write("<html><body><img src='http://example.com/image.jpg'></body></html>")
    End If
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    WebBrowser1.Refresh()
End Sub
person GSerg    schedule 31.03.2013
comment
Это сработало. Спасибо. Интересно, почему метод WebBrowser.Refresh() работает иначе, чем F5 или Обновить в контекстном меню. Я ожидал, что они будут такими же. Имеет какое-то отношение к кешированию? - person mcu; 31.03.2013