当网站加载时,Winforms是否显示加载消息?
我使用Cefsharp 39.0.0在winform中加载网页。现在,当页面加载时,表单为空。如何显示正在加载的gif当网站加载时,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;
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";
}
}