我有一個WinForms窗體,其中包括一個WebBrowser控件。我使用瀏覽器來顯示用戶創建的文件的預覽。WebBrowser控件在Form_Load中沒有響應
當用戶加載文檔時,我希望它自動刷新預覽窗口以顯示新文檔。這工作100%。
但是,我剛剛添加了一個「加載最新文檔」功能,正如您應該能夠說明的那樣,在程序啓動時加載最後一個文檔。雖然它與任何其他加載文檔的方法(打開按鈕,文件 - >打開,文件 - > MRU等)經歷相同的代碼路徑,預覽不會在啓動時刷新。
我已經在調試器中執行了執行程序,並且所有代碼都正在執行。但是,看起來WebBrowser根本不起作用。事後,如果我點擊刷新按鈕(通過相同的代碼路徑),它可以正常工作。
public partial class frmMain : Form {
int scrolltop = 0, scrollleft = 0;
delegate void VoidDelegate();
private void Form1_Load(object sender, EventArgs e) {
//irrelevant initialization code omitted
//this is normally 'about:blank', but it doesn't matter anyway
html.Navigate("http://google.com");
NewFile();
if (GlobalSettings.MRU.Files.Count > 0) {
LoadFile(GlobalSettings.MRU.Files[0]);
}
}
public void NewFile() {
//misc blanking omitted
html.DocumentText = "";
}
private void LoadFile(string file) {
//file loading code omitted
//Trying to call RefreshPreview after everything else is done.
this.Invoke(new VoidDelegate(RefreshPreview));
//RefreshPreview());
}
public void RefreshPreview() {
//preserve the position if possible
if (html.Document.Body != null) {
scrolltop = html.Document.Body.ScrollTop;
scrollleft = html.Document.Body.ScrollLeft;
}
//string code = HtmlProcessing.ProcessCode(txtCode.Text, GetImageList());
string code = "If you can see this, it worked.";
html.DocumentText = code;
}
}
如果您將此代碼粘貼到名爲frmMain
名爲html
WebBrowser控件的形式,掛鉤的Form1_Load
事件(自我提醒,重命名此),你應該能夠重現此樣品。也許添加一個也叫RefreshPreview()
的按鈕。
所以,短版本:在Form_Load期間,WebBrowser不會做任何事情。之後,它工作正常。我需要它在Form_Load中做些什麼,我做錯了什麼?
這是從「???」到「* facepalm *」我還沒有。謝謝! (只要這件事情讓我接受) –