将鼠标悬停在 url RichTextBox 上时更改光标
Posted
技术标签:
【中文标题】将鼠标悬停在 url RichTextBox 上时更改光标【英文标题】:Change Cursor when hovering over url RichTextBox 【发布时间】:2021-11-27 18:43:37 【问题描述】:当前,当鼠标悬停在 RichTextBox (WinForms) 中的 url/链接上时,光标会变为质量非常低的光标,没有抗锯齿。我想使用默认的窗口,它看起来好多了,但我找不到任何解决方案......我只找到了一种更改一般悬停光标的方法,但在悬停在 url 上时却没有。 感谢所有回复:)
【问题讨论】:
你能贴一张你看到的光标的截图吗? commons.wikimedia.org/wiki/File:Mouse-cursor-hand-pointer.svg 看起来类似于正确的图像,但我希望它看起来像“C:\Windows\Cursors”中的“aero_link.cur”。遗憾的是不能在可以看到光标的窗口截屏 【参考方案1】:这似乎是 RichTextBox 和 HiDPI 支持之间的错误。当在 WinForms 应用程序中启用 HiDPI 模式时,该控件可以在 HiDPI 中正确呈现文本,但它没有更新的光标。
根据用例,您可能会考虑使用 WebBrowser 控件或类似的东西。它似乎支持更高分辨率的指针光标。它可以很好地用于查看内容,但对于编辑内容,它可能会有点粗糙。
作为一种粗俗的解决方法,您可以添加 MouseMove 事件处理程序来检测鼠标是否位于超链接上,并手动更改整个控件的光标。这将涉及从 MouseMove 事件参数传入 Point 的 GetCharIndexFromPosition(Point) 方法,然后从 Rtf 属性查看字符串中的 RTF 代码。如果 CharIndex 是非 RTF 字符串,则需要使用 Text 属性,然后使用某种正则表达式确定那里是否存在 URL。
【讨论】:
谢谢,但是我如何准确地检测鼠标是否位于超链接上?我在任何地方都找不到解决方案。 我更新了一些关于 hacky 解决方法的技术提示。以上是关于将鼠标悬停在 url RichTextBox 上时更改光标的主要内容,如果未能解决你的问题,请参考以下文章