如何更改 RichTextBox 段落间距?

Posted

技术标签:

【中文标题】如何更改 RichTextBox 段落间距?【英文标题】:How do I change RichTextBox paragraph spacing? 【发布时间】:2010-09-24 09:58:10 【问题描述】:

我在 WPF 中使用 RichTextBox,并尝试将默认段落间距设置为 0(这样就没有段落间距)。虽然我可以在 XAML 中做到这一点,但如果可能的话,我想以编程方式实现它。有什么想法吗?

【问题讨论】:

【参考方案1】:

我知道这个问题是在我开始编码之前发布的,但我发现只需将 ShowSelectedMargin 设置为 true 就可以了

【讨论】:

这是什么属性?我发现的唯一提及导致了这个答案。【参考方案2】:

对我来说,在 WPF 中使用 VS2017 可以这样工作:

 <RichTextBox HorizontalAlignment="Left" Height="126" Margin="10,280,0,0" VerticalAlignment="Top" Width="343" FontSize="14" Block.LineHeight="2"/>

关键是Block.LineHeight="2"

您也可以在“属性”视图中找到它,但不能从那里更改低于 6 像素。

【讨论】:

“你不能从那里改变低于 6px” - 你可以通过手动编辑值而不是使用下拉菜单将其更改为 1px,它只包含从 6px 开始的常用值。 LineHeight从Paragraph继承Block确定段落有多行时基线之间的垂直距离。它间接地改变了段落前后的空格(问题),但这不是解决方案。而Paragraph.Margin只能调整段落前后的空格。【参考方案3】:
RichTextBox rtb = new RichTextBox();
rtb.SetValue(Paragraph.LineHeightProperty, 1.0);

【讨论】:

不起作用!你自己实际测试过吗? 现在的问题是为什么这有效,为什么默认情况下我喜欢在单个 AppenText 中的每行之间有另一行空格...【参考方案4】:
<RichTextBox  Height="250" Width="500" VerticalScrollBarVisibility="Auto" TextWrapping="Wrap" IsReadOnly="True" >
    <Paragraph>
        XYZ
        <LineBreak />
    </Paragraph>
</RichTextBox>

【讨论】:

这是更改段落边距的一个不错的替代方法,尽管严格来说这不是问题中所要求的。【参考方案5】:

在 C# 2008 WAP 中

richtextbox1.SelectionCharOffset =
    -1 * ( Convert.ToInt32(R223.Txt_Space_Before.Text) * 100);

richtextbox1.SelectionCharOffset =
    Convert.ToInt32(R223.Txt_Space_Before.Text) * 100;

可用于行间距。

这是获得行高间距的唯一方法。

【讨论】:

【参考方案6】:

我做到了风格(双关语缩进)

<RichTextBox  Margin="0,51,0,0" Name="mainTextBox" >
        <RichTextBox.Resources>
            <Style TargetType="x:Type Paragraph">
                <Setter Property="Margin" Value="0"/>
            </Style>
        </RichTextBox.Resources>
    </RichTextBox>

【讨论】:

不错的解决方案,但如果您正在格式化选择,而不是框中的所有文本,您不必使用代码吗? 非常感谢!我讨厌 RichTextBox 如何在 Enter 上插入额外的“行”,我觉得它很陌生,并且担心解决方案会非常困难。男孩,我松了一口气! 对于发现此问题并尝试针对 Windows Phone 7 执行此操作的任何人,Margin 属性不可用。 &lt;LineBreak/&gt; ...【参考方案7】:

关闭,所以你得到了积分。原来是设置margin,

p.Margin = new Thickness(0);

【讨论】:

【参考方案8】:

使用行高

RichTextBox rtb = new RichTextBox();    
Paragraph p = rtb.Document.Blocks.FirstBlock as Paragraph;    
p.LineHeight = 10;

【讨论】:

如果他们可以更改字体大小,这还不够。 我正在尝试获取 LineHeight,但它始终为 NaN。有什么想法吗? 这甚至没有回答这个问题。提问者想知道如何更改 paragraph 间距,即每个段落之间的间距,而不是 line 间距。你应该设置p.Margin 而不是p.LineHeight

以上是关于如何更改 RichTextBox 段落间距?的主要内容,如果未能解决你的问题,请参考以下文章

更改段落之间和段落内部的间距

将段落或文本框附加到 RichTextBox

CORELDRAW段落文本框里的文字如何设置行间距?

在 RichTextBox 中添加软返回

段落之间垂直间距的 CSS 框模型(边距和填充)

怎么设置excel表格中段落的行间距