C#/ WPF:禁用RichTextBox的自动换行

问题描述 投票:21回答:4

有人知道我如何禁用RichTextBox的文字换行吗?例如。如果我有一个大的字符串不适合在窗口中,则RichTextBox放置字符串中无法显示的新行部分。我想禁用它(并使其仅通过使用Scrollbar可见)。

非常感谢。

欢呼声

c# wpf richtextbox word-wrap
4个回答
32
投票

WPF中的RichTextBox只是RichTextBox的编辑器。根据FlowDocument

文本始终包装在RichTextBox中。如果你不想换行然后设置FlowDocument上的MSDN大于宽度RichTextBox。但是,一旦页面达到宽度,文本仍会自动换行。

因此,虽然您无法显式禁用PageWidth的自动换行,但是您可以执行以下操作:

FlowDocument

在行数超过RichTextBox之前,将具有基本上相同的所需效果。

(截至2015年7月):VS2015 RC允许richTextBox1.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible; richTextBox1.Document.PageWidth = 1000; 完全按照OP的期望进行工作。我相信Visual Studio的早期版本也可以。


1
投票

如果您不想显示水平滚动条,请在ScrollViewer上强制设置MinWidth:

PageWidth

0
投票

我还需要显示一个大字符串并尝试了RichTextBox,但我不喜欢将Document的PageWidth设置为固定大小的解决方案。滚动条将一直可见,并且滚动区域很大。

如果TextBlock足够,则可以改用它,并将其放在ScrollViewer中。因为我不需要RichTextBox的所有其他功能,所以它对我来说很完美。

wordwrap = false

0
投票

由于没有答案令我满意,所以这是我的解决方案:

<RichTextBox ScrollViewer.HorizontalScrollBarVisibility="Hidden">

    <RichTextBox.Resources>
        <Style TargetType="ScrollViewer">
            <Setter Property="MinWidth" Value="2000" />
        </Style>
    </RichTextBox.Resources>

</RichTextBox>

有关性能的问题取决于文本长度和刷新频率。

© www.soinside.com 2019 - 2024. All rights reserved.