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

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

【问题讨论】:

    标签: wpf richtextbox


    【解决方案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 开始的常用值。
    • LineHeightParagraph继承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
        猜你喜欢
        • 2017-05-06
        • 1970-01-01
        • 2013-10-27
        • 1970-01-01
        • 2015-07-03
        • 2012-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多