当表单未获得焦点时,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跟踪),
希望有所帮助,
当窗体未获得焦点时,单击窗体上 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跟踪),
希望有所帮助,