RichTextBox
のテキスト折り返しを無効にする方法を知っている人はいますか?例えば。ウィンドウに収まらない大きな文字列がある場合、RichTextBox
は、新しい行の表示できない文字列の部分を配置します。それを無効にしたい(そしてScrollbar
を使用することによってのみ表示できるようにしたい)。
どうもありがとう。
乾杯
WPFの RichTextBox
は、単に FlowDocument
のエディターです。
によると [〜#〜] msdn [〜#〜] :
テキストは常にRichTextBoxで折り返されます。テキストを折り返したくない場合は、 FlowDocument の PageWidth をRichTextBoxの幅よりも大きく設定します。 。ただし、ページ幅に達すると、テキストは折り返されます。
したがって、RichTextBox
のワードラップを明示的に無効にする方法はありませんが、次のようなことができます。
richTextBox1.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible;
richTextBox1.Document.PageWidth = 1000;
PageWidth
を超える行ができるまで、これは基本的に同じ望ましい効果をもたらします。
注(2015年7月現在):VS2015RCではwordwrap = false
OPが望むように正確に機能する。以前のバージョンのVisualStudioもそうだったと思います。
水平スクロールバーを表示したくない場合は、ScrollViewerにMinWidthを適用します。
<RichTextBox ScrollViewer.HorizontalScrollBarVisibility="Hidden">
<RichTextBox.Resources>
<Style TargetType="ScrollViewer">
<Setter Property="MinWidth" Value="2000" />
</Style>
</RichTextBox.Resources>
</RichTextBox>
私にとって満足のいく答えはなかったので、ここに私の解決策があります:
private void RichTxt_TextChanged(object sender, TextChangedEventArgs e)
{
string text = new TextRange(richTxt.Document.ContentStart, richTxt.Document.ContentEnd).Text;
FormattedText ft = new FormattedText(text, System.Globalization.CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface(richTxt.FontFamily, richTxt.FontStyle, richTxt.FontWeight, richTxt.FontStretch), richTxt.FontSize, Brushes.Black);
richTxt.Document.PageWidth = ft.Width + 12;
richTxt.HorizontalScrollBarVisibility = (richTxt.Width < ft.Width + 12) ? ScrollBarVisibility.Visible : ScrollBarVisibility.Hidden;
}
質問は、テキストの長さと更新される頻度に応じたパフォーマンスについてです。
また、大きな文字列を表示してRichTextBoxを試しましたが、ドキュメントの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>