当表单未获得焦点时,RichTextBox 超链接不会引发单击事件

RichTextBox hyperlink does not raise clicked event when the form is not focused

当窗体未获得焦点时,单击窗体上 RichTextBox 内的超链接不会引发单击事件。我必须点击两次。这是设计使然吗?如果是bug,最优雅的解决方案是什么?无论表单是否获得焦点,我都想通过单击引发单击事件。

只需使用

Mouse_Enter
form1.getfocus

我确定您知道鼠标进入事件,所以是的,做类似的事情应该可行....

您必须点击两次,因为表格没有聚焦;第一次点击使表单成为焦点,第二次点击触发 RichTextBox 控件的 LinkClicked 事件。

您可以将表单设置为在鼠标光标位于其边界内时聚焦。将以下代码添加到窗体的构造函数中:

MouseEnter += (s, e) => Focus();

然后在表单处于焦点状态时单击超链接,LinkClicked 事件将根据需要从第一次单击开始触发。

这样就可以使用Richtextbox的鼠标悬停事件了。像这样,

private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
        {
            MessageBox.Show(e.LinkText);
        }

private void richTextBox1_MouseHover(object sender, EventArgs e)
        {
            this.Focus();
        }

Result(我将表单的TopMost 属性设置为true以显示焦点或不清晰。顺便说一句,您可以从表单的header跟踪),

希望有所帮助,