[C#]WPF C#-Get 内联格式化粗体文本从 TextBlock

标签: Visual-Studio WPF C#
发布时间: 2017/2/23 20:16:55
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我加上了一些 TextBlock 的元素 Border 元素在 StackPanel 。 我是添加和格式化文本的 TextBlock 通过添加 Inlines

单击时,我想要的格式化文本的 TextBlock 。这里是我的代码。

public void addText()
{
    TextBlock myText = new TextBlock();
    myText.Inlines.Add(new Bold(new Run("Hello ")));
    myText.Inlines.Add("World!");

    Border myBorder = new Border();
    myBorder.Child = myText;
    myBorder.MouseDown += new MouseButtonEventHandler(Border_Clicked);

    myStackPanel.Children.Add(myBorder);
}

private void Border_Clicked(object sender, MouseButtonEventArgs e)
{
    //Border senderBox = (Border)sender;
    //TextBlock senderText = (TextBlock)senderBox.Child;
    //Bold inline = (Bold) senderText.Inlines.ElementAt(0);
    // How to Output "Hello "?
}

Border_Clicked应输出"Hello"。正如你可以看到我能够到达粗体文本,但我怎么能输出它吗?

解决方法 1:

@Helen,那里是从使用 TextRange TextPointer 获取文本方式。尝试此代码

void myBorder_MouseDown(object sender, MouseButtonEventArgs e)
{
    var senderBox = (Border)sender;
    var senderText = (TextBlock)senderBox.Child;
    var inline = (Bold)senderText.Inlines.ElementAt(0);

    var textRange = new TextRange(inline.ContentStart, inline.ContentEnd);
    Console.WriteLine(textRange.Text);
}
官方微信
官方QQ群
31647020