【问题标题】:How do I make hyperlink text non-editable (like a Tag)如何使超链接文本不可编辑(如标签)
【发布时间】:2020-09-29 06:23:51
【问题描述】:

我使用以下代码将超链接添加到 RichTextBox。但是,我不想让用户在插入超链接名称后更改它。我想让超链接不可编辑。因此,当用户尝试编辑它时,我想删除超链接或将其转换为纯文本。

    protected void AddHyperlink(string linkURL, string linkName) {
      Paragraph para = new Paragraph();

      Hyperlink link = new Hyperlink(new Run(""), rtb.CaretPosition);
      link.IsEnabled = true;
      link.Inlines.Add(linkName);
      link.Tag = "supername";
      link.NavigateUri = new Uri(linkURL);
      link.RequestNavigate += Link_RequestNavigate;
      link.TextDecorations = null;
    }

【问题讨论】:

  • 不,不一样,我以前见过。我希望我的超链接文本不可编辑
  • RichTextBox 的文档是否提供了有关这样做的详细信息?
  • 不,没有找到任何东西。另外,我认为应该是为超链接本身而不是richtextbox设置的行为。

标签: c# wpf hyperlink readonly richtext


【解决方案1】:

欢迎来到 SO!

尝试将超链接包装在标签中:

Paragraph para = new Paragraph();

Hyperlink link = new Hyperlink();
link.IsEnabled = true;
link.Inlines.Add(linkName);
link.NavigateUri = new Uri(linkURL);
link.RequestNavigate += Link_RequestNavigate;

var label = new Label { Content = link, Padding=new Thickness(0) };
para.Inlines.Add(label);

rtb.Document.Blocks.Add(para);

【讨论】:

  • 谢谢你,它照顾它,但是当我点击它时超链接不再起作用,如果我尝试删除标签,它会抛出一个错误“托管调试助手'FatalExecutionEngineError':'The运行时遇到致命错误。"
  • 顺便说一句,稍后在我的程序中,我使用段落对象来解析项目。据此,我必须将其保留为超链接。 docs.microsoft.com/en-us/dotnet/api/…
  • 我认为超链接本身应该有一个设置使其只读,但我找不到它
猜你喜欢
  • 2017-07-23
  • 1970-01-01
  • 2013-05-23
  • 2023-01-28
  • 1970-01-01
  • 2020-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多