WebBrowser控件完成加载时显示WinForm

时间:2014-10-30 20:20:17

标签: c# winforms webbrowser-control delay flicker

我的WinForm里面有WebBrowser控件。

我正面临来自WebBrowser控件的恼人闪烁。这表明WebBrowser控件(或背景)的主体在加载网页之前显示大约200ms,我无法摆脱它。

我想,当调用myForm.Show()在WebBrowser完成加载时看到窗口,而不是看到这种闪烁。

当WebBrowser控件完成加载页面时调用myForm.Show()以显示WebForm页面有什么办法吗?

我了解DocumentCompleted事件并阅读并尝试了一些技巧mentioned here,但在显示网页之前仍然无法摆脱这个填充的空白背景。

任何提示?

1 个答案:

答案 0 :(得分:0)

public class MyForm : Form
{
    WebBrowser _Webbrowser = new WebBrowser();
    TaskCompletionSource<object> _tcs = new TaskCompletionSource<object>();

    public MyForm(string url)
    {
        _Webbrowser.ScriptErrorsSuppressed = true;
        this.Controls.Add(_Webbrowser);
        _Webbrowser.DocumentCompleted += (s, e) => { _tcs.TrySetResult(null); };
        _Webbrowser.Navigate(url);
    }

    public async new void Show()
    {
        await _tcs.Task;
        base.Show();
    }
}