更改webbrowser光标

时间:2013-11-08 11:58:56

标签: c# .net webbrowser-control

我有一个包含WebBrowser控件的表单。 我需要将光标更改为WebBrowser。

我试试

this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
this.TopLevelControl.Cursor = Cursors.WaitCursor;

光标仅更改表单,但不适用于WebBrowser。

如何更改WebBrowser控件中的光标?

4 个答案:

答案 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;