当网站加载时,Winforms是否显示加载消息?

当网站加载时,Winforms是否显示加载消息?,winforms,chromium-embedded,cefsharp,Winforms,Chromium Embedded,Cefsharp,我使用Cefsharp 39.0.0在winform中加载网页。现在,当页面加载时,表单为空。如何显示正在加载的gif public Browser() { InitializeComponent(); string clientURL = "www.imdb.com"; ChromiumWebBrowser browser = new ChromiumWebBrowser(clientURL); browser.Dock = DockStyle.Fill;

我使用Cefsharp 39.0.0在winform中加载网页。现在,当页面加载时,表单为空。如何显示正在加载的gif

public Browser() {
    InitializeComponent();
    string clientURL = "www.imdb.com";

    ChromiumWebBrowser browser = new ChromiumWebBrowser(clientURL);

    browser.Dock = DockStyle.Fill;

    toolStripContainer.ContentPanel.Controls.Add(browser);


    browser.RegisterJsObject("camera", new Camera());

}
我调查了这件事。但是我不知道如何使用它在表单中显示从本地资源加载的图像,直到网页完全加载

EventHandler < NavStateChangedEventArgs > handler = null;
handler = (sender, args) = > {

    //TODO : show a loading gif until the page load completes

    //Wait for while page to finish loading not just the first frame
    if (!args.IsLoading) {
        browser.NavStateChanged -= handler;

        MessageBox.Show("The page has completed loading", "Load completed", MessageBoxButtons.OK);
       //TODO : once load complete show the actual page
    }
};
EventHandlerhandler=null;
处理程序=(发送方,参数)=>{
//TODO:显示加载gif,直到页面加载完成
//等待while page完成加载,而不仅仅是第一帧
如果(!args.IsLoading){
browser.NavStateChanged-=处理程序;
MessageBox.Show(“页面已完成加载”,“加载完成”,MessageBoxButtons.OK);
//TODO:加载完成后显示实际页面
}
};

<代码> > p>我们的应用程序是C++,但有些可能适用。我们在应用程序中编译了一个html文件作为资源,并将该URL传递给CefBrowserHost::CreateBrowserSync(),在您的例子中,它看起来将是“new ChromiumWebBrowser()”。我们让启动屏幕加载我们想要的真实URL,同时它显示一个动画GIF。所以这个电话看起来像

new ChromiumWebBrowser("http://embeddedsplashscreen.html");
embeddedsplashscreen.html的主体

<body class="splash" onload=" pageLoad() ">
我们的启动屏幕有一个由样式表设置的背景和一个动画gif,当请求的url进入时,它就会消失

对于CefSharp,我不知道如何指定本地资源。使用C++中的ReaveCyUTILWIN .CPP中的技术,特别是GETRealCEDID(),将URL与编译的资源ID关联起来,通过在硬编码表中匹配URL中的文本来执行URL。 对于CefSharp,我发现这些链接可能会有所帮助- 和

亚历克斯·梅特兰的回答

您可以先从本地磁盘加载自己的“加载页面”,这非常快

第一种方法是使用
ResourceHandler
(您可以从磁盘加载流)。 (您还应该使用一个
SchemeHandler
,它提供了更多的灵活性,请参见)

CefSharp
完全无关的选项是将图像覆盖在控件上,并在完成后将其删除。这可能会提供最佳的用户体验。我相信像stackoverflow这样的地方在一般意义上都有这方面的信息。 请记住,如果隐藏浏览器实例,它将停止渲染(性能原因),它将继续加载

如果您不需要代理支持,那么禁用代理应该会略微加快初始加载速度(相对而言,代理解析需要一段时间)

    function pageLoad() {
        window.location = "www.urlyoureallywant.com";
        }          
    }