在WPF的RICHTEXTBOX中 我用 new 出来的Paragraph 两段的间距很大 ,求解。。。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在WPF的RICHTEXTBOX中 我用 new 出来的Paragraph 两段的间距很大 ,求解。。。。相关的知识,希望对你有一定的参考价值。

在WPF的RICHTEXTBOX中 我用
Paragraph para = new Paragraph();
para.Margin = new Thickness(0);
para.Inlines.Add(uic);
RichTextRecive.Document.Blocks.Add(para);
添加段落 结果两段间距特别大 。
而默认不用NEW的情况,用
<Style TargetType="x:Type Paragraph" >
<Setter Property="Margin" Value="0"/>
</Style>则两段间距正常。
如何才能用代码创建正常间距的Paragraph ?

参考技术A para.SetValue(Paragraph.LineHeightProperty, 10.0); 参考技术B 或许是微软wpf自身的bug,我这边没有显示出来。难道与具体的uic有关 。。。

RichTextBox (WPF) 没有字符串属性“Text”

【中文标题】RichTextBox (WPF) 没有字符串属性“Text”【英文标题】:RichTextBox (WPF) does not have string property "Text" 【发布时间】:2010-10-31 17:49:17 【问题描述】:

我正在尝试设置/获取我的 RichTextBox 的文本,但是当我想获取 test.Text 时,Text 不在其属性列表中...

我在 C# (.net framework 3.5 SP1) 中使用代码

RichTextBox test = new RichTextBox();

不能有test.Text(?)

你知道怎么可能吗?

【问题讨论】:

【参考方案1】:

据此,它确实有一个 Text 属性

http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox_members.aspx

如果您想将文本拆分为线条,也可以尝试“线条”属性。

【讨论】:

这是 WPF,不是 Win Forms。【参考方案2】:

System.Windows.Forms 和 System.Windows.Control 中的 RichTextBox 之间存在混淆

我在使用 WPF 时使用控件中的那个。在那里,没有 Text 属性,为了获取文本,我应该使用这一行:

string myText = new TextRange(transcriberArea.Document.ContentStart, transcriberArea.Document.ContentEnd).Text; 

谢谢

【讨论】:

【参考方案3】:

WPF RichTextBox 有一个Document 属性用于设置内容a la MSDN:

// Create a FlowDocument to contain content for the RichTextBox.
        FlowDocument myFlowDoc = new FlowDocument();

        // Add paragraphs to the FlowDocument.
        myFlowDoc.Blocks.Add(new Paragraph(new Run("Paragraph 1")));
        myFlowDoc.Blocks.Add(new Paragraph(new Run("Paragraph 2")));
        myFlowDoc.Blocks.Add(new Paragraph(new Run("Paragraph 3")));
        RichTextBox myRichTextBox = new RichTextBox();

        // Add initial content to the RichTextBox.
        myRichTextBox.Document = myFlowDoc;

您可以只使用AppendText 方法,但如果这就是您所追求的。

希望对您有所帮助。

【讨论】:

【参考方案4】:

WPF RichTextBox 控件中没有Text 属性。这是获取所有文本的一种方法:

TextRange range = new TextRange(myRTB.Document.ContentStart, myRTB.Document.ContentEnd);

string allText = range.Text;

【讨论】:

【参考方案5】:
string GetString(RichTextBox rtb)

    var textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
    return textRange.Text;

【讨论】:

【参考方案6】:

“扩展 WPF 工具包”现在提供了一个带有 Text 属性的富文本框。

您可以获取或设置不同格式的文本(XAML、RTF 和纯文本)。

这里是链接:Extended WPF Toolkit RichTextBox

【讨论】:

【参考方案7】:

只需执行以下操作如何:

_richTextBox.SelectAll();
string myText = _richTextBox.Selection.Text;

【讨论】:

迄今为止我能找到的最佳答案 :) 如果您想将长度粘贴到 GUI 中的另一个文本框中,我的代码如下:rtxb_input.SelectAll();txb_InputLength.Text = rtxb_input.Selection.Text.Length.ToString();【参考方案8】:

设置 RichTextBox文本:

richTextBox1.Document.Blocks.Clear();
richTextBox1.Document.Blocks.Add(new Paragraph(new Run("Text")));

获取 RichTextBox 文本:

string richText = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text;

【讨论】:

Contructor 'Run' 有 0 个参数,但使用 1 个参数调用,段落相同 @alvinmeimoun 实际上,Paragraph() 有一个 Paragraph(Inline) 重载 at least since .NET 3.5(并且 Run(string) 也是有效的 - 甚至在示例中也是如此)。 为什么这么复杂? 如何在段落中添加FontFamily【参考方案9】:
RichTextBox rtf = new RichTextBox();
System.IO.MemoryStream stream = new System.IO.MemoryStream(ASCIIEncoding.Default.GetBytes(yourText));

rtf.Selection.Load(stream, DataFormats.Rtf);

rtf.Selection.Text = yourText;

【讨论】:

【参考方案10】:

使用两种扩展方法,这变得非常简单:

public static class Ext

    public static void SetText(this RichTextBox richTextBox, string text)
    
        richTextBox.Document.Blocks.Clear();
        richTextBox.Document.Blocks.Add(new Paragraph(new Run(text)));
    

    public static string GetText(this RichTextBox richTextBox)
    
        return new TextRange(richTextBox.Document.ContentStart,
            richTextBox.Document.ContentEnd).Text;
    

【讨论】:

以上是关于在WPF的RICHTEXTBOX中 我用 new 出来的Paragraph 两段的间距很大 ,求解。。。。的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WPF 应用程序的 RichTextBox 中记录时间?

WPF RichTextBox 控件常用方法和属性

wpf中如何让richtextbox的滚动条显示

WPF RichTextBox 插入回车

C#/WPF:禁用 RichTextBox 的文本换行

.net 4.5 中可绑定的 WPF Richtextbox