Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebBrowser控件没有';在Form_负载期间,无响应_C#_Events_.net 3.5_Webbrowser Control - Fatal编程技术网

C# WebBrowser控件没有';在Form_负载期间,无响应

C# WebBrowser控件没有';在Form_负载期间,无响应,c#,events,.net-3.5,webbrowser-control,C#,Events,.net 3.5,Webbrowser Control,我有一个WinForms表单,其中包括一个WebBrowser控件。我使用浏览器显示用户创建的文件的预览 当用户加载文档时,我希望它自动刷新预览窗口以显示新文档。这100%有效 然而,我刚刚添加了一个“加载最近的文档”功能,正如您应该知道的,它在程序启动时加载最后一个文档。尽管它与加载文档的任何其他方法(打开按钮、文件->打开、文件->MRU等)的代码路径相同,但预览在启动时不会刷新 我已经跟踪了调试器中的执行,所有代码都在执行中。然而,WebBrowser似乎根本不起作用。如果我在之后点击刷新

我有一个WinForms表单,其中包括一个WebBrowser控件。我使用浏览器显示用户创建的文件的预览

当用户加载文档时,我希望它自动刷新预览窗口以显示新文档。这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;
    }
}
如果您使用名为
html
的WebBrowser控件将此代码粘贴到名为
frmMain
的表单中,并连接
Form1\u Load
事件(请注意,重命名此;),您应该能够复制此示例。也可以添加一个调用
RefreshPreview()
的按钮


所以,简短的版本是:在表单加载期间,WebBrowser不做任何事情。之后,它工作得很好。我需要它在表单加载期间执行某些操作,我做错了什么?

我建议将您的代码移动到事件中。问题很可能是由于以下原因造成的。由于加载发生在表单显示之前,因此WebBrowser的VisibleChanged事件从未发生,我相信它完全处于非活动状态。

这是我从“?”到“facepalm”的快速转变。非常感谢。(这件事一让我接受)