我有一个包含 WebBrowser 控件的表单。我需要将光标更改为 WebBrowser。
我试试
this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
this.TopLevelControl.Cursor = Cursors.WaitCursor;
光标仅更改形式,但不用于 WebBrowser。
如何更改 WebBrowser 控件中的光标?
我有一个包含 WebBrowser 控件的表单。我需要将光标更改为 WebBrowser。
我试试
this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
this.TopLevelControl.Cursor = Cursors.WaitCursor;
光标仅更改形式,但不用于 WebBrowser。
如何更改 WebBrowser 控件中的光标?
将您的解决方案的引用添加到“mshtml.dll”。加载后Document
,试试这个:
IHTMLDocument2 doc = (webDocument1.Document.DomDocument) as IHTMLDocument2;
IHTMLStyleSheet style = doc.createStyleSheet("", 0);
style.cssText = @"body { cursor: wait; }";
请记住,结果还取决于您加载网页的方式(加载本地/嵌入文件、设置DocumentStream
等)。
失败原因:
您正在为Form
而不是WebBrowser
控制设置光标,如下所示:
this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
这就是为什么它将光标设置为Form
而不是WebBrowser
控制。
您可以为任何控件设置光标,如下所示:
controlName.Cursor=System.Windows.Forms.Cursors.WaitCursor;
但WebBrowser
控件不支持 Cursor 属性。因此,您不能为WebBrowser
Control 设置此属性。即使您设置了它,它也不会给出编译错误,但会引发以下运行时错误。
WebBrowser Control does not Support the Cursor Property.
尝试这个:
Icon ico = new Icon(@"C:\temp\someIcon.ico");
this.Cursor = new Cursor(ico.Handle);
The static class System.Windows.Forms.Cursors contains all system cursors.
To switch back to the default system cursor, use this:
this.Cursor = System.Windows.Forms.Cursors.Default;
如果您在其中设置带有 WebBrowser 控件的 Form 的光标,Form 将显示等待光标,但浏览器不会,因为浏览器将光标设置在它自己对应的 HTML 内容上。例如,如果您将鼠标移到超链接上,Internet Explorer 会将光标更改为手形光标。JavaScript 和 CSS 也可以修改光标。因此,当 Internet Explorer 控制光标时,无法设置 WaitCursor。
但是我发现了一个用一行代码来做到这一点的技巧!
如果您进行了长时间的处理并希望同时显示等待光标,您可以使用以下代码打开和关闭它:
public void SetWaitCursor(bool b_Wait)
{
Application.UseWaitCursor = b_Wait;
// The Browser control must be disabled otherwise it does not show the wait cursor.
webBrowser.Enabled = !b_Wait;
Application.DoEvents();
}
诀窍是禁用浏览器控件,它会显示等待光标,因为禁用的 Internet Explorer 不再控制光标。
所以你的最终代码将如下所示:
SetWaitCursor(true);
doLenghtyProcessing();
SetWaitCursor(false);