簡體   English   中英

如何將選定的文本轉換為RichEditBox中的超鏈接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM