我有一个包含WebBrowser控件的表单。 我需要将光标更改为WebBrowser。
我试试
this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
this.TopLevelControl.Cursor = Cursors.WaitCursor;
光标仅更改表单,但不适用于WebBrowser。
如何更改WebBrowser控件中的光标?
答案 0 :(得分:2)
将解决方案的引用添加到“mshtml.dll”。加载Document
后,请尝试以下操作:
IHTMLDocument2 doc = (webDocument1.Document.DomDocument) as IHTMLDocument2;
IHTMLStyleSheet style = doc.createStyleSheet("", 0);
style.cssText = @"body { cursor: wait; }";
请注意,结果还取决于您加载网页的方式(加载本地/嵌入文件,设置DocumentStream
等)。
答案 1 :(得分:0)
失败原因:
您正在为Form
而不是WebBrowser
控件设置光标,如下所示:
this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
这就是为什么它将光标设置为Form
而不是WebBrowser
Control。
您可以为任何控件设置Cursor,如下所示:
controlName.Cursor=System.Windows.Forms.Cursors.WaitCursor;
但WebBrowser
控件不支持Cursor属性。
因此,如果设置它,则无法为WebBrowser
Control.even设置此属性,它不会产生编译错误,但会在运行时错误后抛出。
WebBrowser Control does not Support the Cursor Property.
答案 2 :(得分:0)
如果设置一个带有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);
答案 3 :(得分:0)
试试这个:
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;