Markieren Sie bei der Auswahl mit TextPointern keine Zeilenumbrüche

8

Also habe ich ein RichTextBox (siehe unten), das eine Schriftart mit gleichem Abstand hat und in jeder Zeile die gleiche Anzahl von Zeichen haben muss. Dazu müssen Sie nach jedem \n -Zeichen in der Zeichenfolge, die die Box eingibt, ein x -Nachzeilenzeichen einfügen.

Ich habe auch einen Algorithmus, der es dem Cursor ermöglicht, sich mit den Pfeiltasten zu bewegen und einzelne Zeichen während der Bewegung auszuwählen. Wenn der Cursor jedoch ein Wort in der Box bedeckt, sollte es das ganze Wort hervorheben.

Problem: Wenn ein Wort mehrere Zeilen umfasst, gibt es einen leeren Platz nach dem letzten Zeichen der ersten Zeile, was vermutlich auf das \n -Zeichen zurückzuführen ist.

Wie kann ich die RichTextBox.Selection.Select() nicht auf diese leeren Leerzeichen setzen? Ich kann die Auswahl des Zeichens beim Parsen und so entfernen, aber ich muss diesen leeren Platz nicht markieren können.

EDIT: Eine akzeptable Alternative würde die Zeilenumbrüche unnötig machen. Wie in, um das RichTextBox irgendwie zu reparieren, so dass es immer 12 Zeichen auf jeder Zeile hat, aber das ist nicht ideal, da ich es leicht haben möchte, die Größe des Fensters zu ändern.

AKTUALISIERUNG: Es scheint, dass die Verringerung der Breite der Textspalte innerhalb des XAML die Größe der Hervorhebung, die über die Kante hinausgeht, verringert, aber nicht vollständig beseitigt hat. Ich kann die Breite nicht mehr verringern, ohne dass Text umbrochen wird.

    
Airhead 20.11.2016, 20:02
quelle

2 Antworten

4

Ich habe herausgefunden, dass das Problem nicht speziell mit dem \n -Zeichen zusammenhängt.

Ich bin mir immer noch nicht ganz sicher, was das verursacht hat, aber ich habe es so gelöst:

Nachdem Sie herumgespielt haben und festgestellt haben, dass sich die Breite der Spalte auf die Breite des schlecht markierten Bereichs auswirkt, habe ich versucht, die Breite zu verringern. Das Problem war, dass der Text umbrochen wurde.

Also dachte ich, okay, ich werde WordWrap nur für RichTextBox deaktivieren, oder? Falsch. WPF erlaubt uns nicht, dies zu deaktivieren.

Ich brauchte einen Weg, um den Effekt der Deaktivierung von WordWrap zu erzielen. Nachdem ich etwas gelesen hatte, sah ich, dass ich die FlowDocument -Eigenschaft von Width auf eine sehr große Zahl setzen konnte, so dass der Text niemals umbrochen wurde. Um das zu tun, musste ich die Bildlaufleiste deaktivieren.

Also hatte ich den Effekt von "wordwrap" deaktiviert und konnte die Breite von RichTextBox weiter verringern, bis der schlechte Platz unsichtbar war, wenn nicht verschwunden.

Also, Problem gelöst, aber ich bin immer noch mit einer Frage übrig: Warum hasst Microsoft mich?

    
Airhead 25.11.2016, 19:43
quelle
-1

Könnten Sie versuchen, das Wort mit \ n zu teilen? Durchlaufen Sie dann jeden Split und übergeben Sie ihn an RichTextBox.Selection.Select ().

Ähnlich wie dies

    
Chochu 29.11.2016 21:17
quelle