提问人:sadegh 提问时间:4/25/2023 更新时间:4/25/2023 访问量:141
为什么富文本框的链接单击事件在 C# Windows 窗体中不触发?
why the link click event of rich text box not fire in C# windows form?
问:
我没有richtextbox,我想在上面使用超链接,这样当用户单击网站链接或本地文件时,就会打开。但该事件未被触发。
- 我从属性窗口中检查了事件处理程序,并且设置正确。
- 我检查了 DetectUrls 属性并且是 true。
- 我在链接点击事件的整行上设置了调试点,但是点击超链接后程序没有进入事件正文。
我的代码是:
private void TextBoxDefinition_LinkClicked(object sender, LinkClickedEventArgs e)
{
if (e.LinkText.StartsWith("file://"))
{
string filePath = e.LinkText.Substring(7);
Process.Start(filePath);
}
else
{
Process.Start(e.LinkText);
}
}
为什么事件不运行。如何解决这个问题?
答:
0赞
Arthur Correa
4/25/2023
#1
仅当窗体的焦点位于 RichTextBox 上时,才会激活该事件,请尝试将焦点设置为该事件
private void TextBoxDefinition_MouseEnter(object sender, System.EventArgs e)
{
TextBoxDefinition.Focus(); // Define Focus to RichTextBox
}
评论
0赞
sadegh
4/25/2023
我不这么认为。我尝试使用和不使用您的代码,结果都是一样的。但现在我也尝试了别的东西。当我创建超链接时,正如我所说,该事件没有触发。但是当我进入并继续下一行时,事件就会运行。此外,当我使用 rtf 格式创建超链接时,网站链接工作正常(输入并转到下一行后)。但是文件的超链接不起作用并且保存不正确(例如,对于 C:\Users\sadegh\Desktop\16.txe,e.linktext 返回 c:16txt)
0赞
sadegh
4/25/2023
几分钟前,我找到了这种创建超链接的格式。但这种格式只是为网站创建超链接,而不是 UTF8。TextBoxDefinition.SelectedRtf = @“{\rtf1\ansi ” + @“{\field{*\fldinst HYPERLINK ”“” + url + @“”“ }{\fldrslt ” + text +@“}}}”;
0赞
Arthur Correa
4/25/2023
尝试创建一个 LinkLabel 并将其添加到富文本框,然后将 linkclick 事件设置为 linklabellinkclick。也可以是一个解决方案。
0赞
sadegh
4/25/2023
我都尝试了,现在事件已经成功,但现在我发现了一个我无法理解的奇怪问题。创建超链接时,事件无法触发和打开文件。用户必须输入才能转到新行。然后键入至少与上述行的长度大致相同的内容。在此之后,通过单击超链接,将执行事件并打开文件。
0赞
Arthur Correa
4/26/2023
你能在github上提供一个路径吗?
评论