有谁知道如何禁用RichTextBox
的文本换行?
例如。如果我有一个不适合窗口的大字符串,RichTextBox
会放置一个无法显示新行的字符串部分。我想禁用它(并且仅使用Scrollbar
使其可见。)
非常感谢。
干杯
答案 0 :(得分:30)
WPF中的RichTextBox
只是FlowDocument
的编辑器
根据{{3}}:
文字始终包含在 RichTextBox 中。如果 你不希望文本换行然后设置 MSDN上的PageWidth 大于宽度 的 RichTextBox的即可。但是,一旦页面 宽度到达文本仍然包装。
因此,虽然您无法明确禁用RichTextBox
的自动换行,但您可以执行以下操作:
richTextBox1.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible;
richTextBox1.Document.PageWidth = 1000;
除非您的行超过PageWidth
,否则其效果基本相同。
注意(截至2015年7月):VS2015 RC允许wordwrap = false
正如OP所希望的那样精确地工作。我相信早期版本的Visual Studio也可以。
答案 1 :(得分:1)
如果您不想显示水平滚动条,请在ScrollViewer上强制使用MinWidth:
<RichTextBox ScrollViewer.HorizontalScrollBarVisibility="Hidden">
<RichTextBox.Resources>
<Style TargetType="ScrollViewer">
<Setter Property="MinWidth" Value="2000" />
</Style>
</RichTextBox.Resources>
</RichTextBox>
答案 2 :(得分:0)
我还需要显示一个大字符串并尝试使用RichTextBox,但我不喜欢将Document的PageWidth设置为固定大小的解决方案。滚动条将始终可见,滚动区域将变大。
如果TextBlock足够,您可以使用它,并将其放在ScrollViewer中。它非常适合我,因为我不需要RichTextBox的所有额外功能。
<ScrollViewer Width="200"
Height="100"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<TextBlock TextWrapping="NoWrap">
<TextBlock.Text>
Very long text Very long text Very long text
</TextBlock.Text>
</TextBlock>
</ScrollViewer>
答案 3 :(得分:0)
因为没有答案让我满意,所以这是我的解决方案:
SELECT a.Group_ID,min(Date) as Date
FROM
(SELECT *,
lead(date,2) over(partition by group_id order by date) as lag_date2
FROM #EVENT_COUNT) a
WHERE DATEDIFF(day,date,ISNULL(lag_date2,'01Jan2100'))<=180
GROUP BY a.Group_ID
问题在于性能取决于文本长度和刷新频率。
答案 4 :(得分:0)
VerticalScrollBar:
VerticalScrollBarVisibility =“ Auto” MaxHeight =“ 200”
HorizontalScrollBar:
HorizontalScrollBarVisibility =“ Auto” MaxWidth =“ 400”
答案 5 :(得分:0)
对我来说合适的解决方案。这个想法来自 here. 我在XAML中定义
<RichTextBox x:Name="PART_rtb" VerticalAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Auto" TextChanged="MyRichTextBox_OnTextChanged">
<RichTextBox.Document>
<FlowDocument x:Name="PART_fd" >
<FlowDocument.Resources>
<!--This style is used to set the margins for all paragraphs in the FlowDocument to 0.-->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="3"/>
</Style>
</FlowDocument.Resources>
</FlowDocument>
</RichTextBox.Document>
</RichTextBox>
代码内
private void MyRichTextBox_OnTextChanged(object sender, TextChangedEventArgs e)
{
double i = PART_rtb.Document.GetFormattedText().WidthIncludingTrailingWhitespace + 20;
(sender as RichTextBox).Document.PageWidth = i;
}