[英]How to convert a selected text into a hyperlink in a RichEditBox
我嘗試了下面的代碼,但是它拋出異常System.ArgumentException
,該異常消息是:
值不在預期范圍內。
public void InsertLink(RichEditBox control)
{
control.Document.Selection.Link ="http://www.bing.com";
}
它包含的文本必須用引號引起來,並可選地在前哨字符0xFDDF之前。 例如:“ http://www.msn.com ”或“ 0xFDDF”“ http://www.msn.com ”。
您可以從MSDN 源代碼獲得更多詳細信息。
因此,您需要像下面這樣更改代碼:
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<RichEditBox x:Name="richeditbox" Height="200">
</RichEditBox>
<Button Content="Convert to hypelink" Click="Button_Click"></Button>
</StackPanel>
private void Button_Click(object sender, RoutedEventArgs e)
{
richeditbox.Document.Selection.Link = "\"http://www.bing.com\"";
}
Xavier的答案是正確的。 根據文檔需要將URL括在引號中。 這只會將選擇內容注冊為准系統鏈接,沒有任何特殊的計算樣式(即,您的鏈接看起來與純文本沒有什么不同,但實際上是一個鏈接)。 通常,鏈接使用下划線設置樣式,為此,您可以將其標記為RTF 字段,如下所示:
var sel = control.Document.Selection;
var rtf = @"{\rtf1{\field{\*\fldinst HYPERLINK ""http://www.bing.com""}{\fldrslt{\ul " + sel.Text + "}}}}";
sel.SetText(TextSetOptions.FormatRtf, rtf);
我對RTF不太熟悉,所以我不知道上面的代碼是否是最正確的方法,但是它可以工作。 富文本API似乎並沒有一種處理字段的好方法,因此我不得不求助於RTF原始標記。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.