1

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

我试试

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

光标仅更改形式,但不用于 WebBrowser。

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

4

4 回答 4

2

将您的解决方案的引用添加到“mshtml.dll”。加载后Document,试试这个:

IHTMLDocument2 doc = (webDocument1.Document.DomDocument) as IHTMLDocument2;
IHTMLStyleSheet style = doc.createStyleSheet("", 0);
style.cssText = @"body { cursor: wait; }";

请记住,结果还取决于您加载网页的方式(加载本地/嵌入文件、设置DocumentStream等)。

于 2013-11-08T14:34:18.233 回答
0

失败原因:

您正在为Form而不是WebBrowser控制设置光标,如下所示:

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

这就是为什么它将光标设置为Form而不是WebBrowser控制。

您可以为任何控件设置光标,如下所示:

controlName.Cursor=System.Windows.Forms.Cursors.WaitCursor;

WebBrowser控件不支持 Cursor 属性。因此,您不能为WebBrowserControl 设置此属性。即使您设置了它,它也不会给出编译错误,但会引发以下运行时错误。

WebBrowser Control does not Support the Cursor Property.
于 2013-11-08T12:14:56.860 回答
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;
于 2016-11-21T12:54:47.303 回答
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);
于 2016-11-21T12:15:49.990 回答