2009-09-02 47 views
18

Weiß jemand, wie ich die Textverpackung von RichTextBox deaktivieren kann? Zum Beispiel Wenn ich eine große Zeichenfolge habe, die nicht in das Fenster passt, platziert RichTextBox den Teil der Zeichenfolge, der nicht von einer neuen Zeile angezeigt werden kann. Ich möchte das deaktivieren (und sichtbar machen nur mit dem Scrollbar).C#/WPF: Text-Wrap von RichTextBox deaktivieren

Vielen Dank.

Prost

Antwort

27

A RichTextBox in WPF ist einfach ein Editor für eine FlowDocument.
Nach MSDN:

Text wickelt immer in einem RichTextBox. Wenn Sie nicht wollen, Text wickeln und stellen Sie dann die PageWidth auf die FlowDocument zu größer sein als die Breite des RichTextBox. Sobald jedoch die Breite der Seite erreicht ist, wird der Text immer noch umbrochen.

So, während es keine Möglichkeit für Sie explizit die Zeilenumbruch eines RichTextBox deaktivieren, können Sie etwas tun:

richTextBox1.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible; 
richTextBox1.Document.PageWidth = 1000; 

, die im wesentlichen den gleichen gewünschten Effekt haben wird, bis Sie eine Linie, die die PageWidth überschreitet.

Hinweis (Stand Juli 2015): VS2015 RC ermöglicht wordwrap = false präzise arbeiten als OP scheint zu wünschen. Ich glaube frühere Versionen von Visual Studio haben das auch getan.

+0

Thank you! Arbeitete wie ein Charme –

+6

Ich mag die Lösung nicht, weil dann die horizontale Scroolbar ständig sichtbar ist ... – Elisabeth

+0

wäre es schön, wenn Sie festlegen könnten, dass bei der Erkennung (irgendwie) das Wrapping benötigt wird (zB jedes "run" überprüfen) [Absatz] Breite oder etwas) und schalten Sie es wieder aus, wenn nicht benötigt (Überwachung Text ändern, um jedes Mal zu überprüfen, obwohl es langsam sein kann) –

0

Ich musste auch eine große Zeichenfolge anzeigen und versuchte die RichTextBox, aber ich mochte die Lösung nicht mit der Einstellung der PageWidth des Dokuments auf eine feste Größe. Die Bildlaufleiste wäre ständig sichtbar und der Bildlaufbereich wäre zu groß.

Wenn ein TextBlock ausreicht, können Sie diesen stattdessen verwenden und in einem ScrollViewer platzieren. Es funktionierte perfekt für mich, da ich nicht alle zusätzlichen Funktionen der RichTextBox brauchte.

<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> 
+0

ein TextBlock ist nicht bearbeitbar, plus ich glaube nicht, dass es reiche Formatierung unterstützt –

+1

@GeorgeBirbilis TextBlock ist nicht editierbar, aber es unterstützt Rich-Formatierung mit verschachtelten Formatierungs-Tags. Fett, Hyperlink usw. – SepehrM

1

Wenn Sie die horizontale Bildlaufleiste nicht zeigen wollen, eine MinWidth auf dem Scroll erzwingen:

<RichTextBox ScrollViewer.HorizontalScrollBarVisibility="Hidden"> 

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

</RichTextBox>