如何更改 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 属性不可用。<LineBreak/>
...【参考方案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 段落间距?的主要内容,如果未能解决你的问题,请参考以下文章