Laden...

C# RichTextBox SelectionStart

Erstellt von Csharper.1 vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.682 Views
C
Csharper.1 Themenstarter:in
1 Beiträge seit 2015
vor 8 Jahren
C# RichTextBox SelectionStart

Hallo 😃. Ich bin neu hier und habe mal eine Frage:

Ich habe es geschafft, dass wenn ich einen Hotkey drücke, der Text der aktuellen Zeile der RichTextBox ausgelesen und analysiert wird. Je nach dem wird der RichTextBox ein Text hinzugefügt. Mein Beispiel:

 var line = richTextBox1.GetLineFromCharIndex(this.richTextBox1.SelectionStart);
            var s = this.richTextBox1.Lines[line];

            var lineStart = richTextBox1.GetFirstCharIndexFromLine(line);
            richTextBox1.Select(lineStart, s.Length);

            richTextBox1.SelectedText = "<" + s + ">" + "</" + s + ">";

Und mit die SelectionStart setzen:

this.richTextBox1.SelectionStart = 1 + s.Length + 3 + s.Length + 1;

Nun wird die Selection auf die erste Zeile der RichTextBox übertragen. Es handelt sich bei diesem Programm um einen HTML Editor. Wenn ich jetzt z.B. in der 20. Zeile bin, funktioniert das alles nicht mehr. Wenn ich jetzt z.B. in die Zeile 60 ein center eingebe, dann soll der Text als <center>...</center> angezeigt werden. Bei dem ... soll der Cursor gesetzt werden. Könntet ihr mir vielleicht weiterhelfen?

N
232 Beiträge seit 2011
vor 8 Jahren

Ich bin mir nicht sicher ob ich die Aufgabe verstanden habe aber ich versuche es mal. Du möchtest ein Wort markieren, zum Beispiel "Haus", anschließend einen "HotKey" drücken und das Wort "Haus" mit dem HTML <center> Tag umfassen?

1.820 Beiträge seit 2005
vor 8 Jahren

Hallo,

funktioniert das alles nicht mehr

Das hilft uns nicht viel weiter.
Was genau funktioniert nicht (Cursor wird nicht gesetzt, Text wird falsch eingefügt, falscher text markiert, wird eine Exception geworfen, wenn ja welche .....)?

Mit dieses Informationen können wir die Ursache bestimmt besser eingrenzen.

@nicky: Es soll wohl der markierte Text durch ein öffnenes und schließendes HTML-Tag ersetzt werden.

Nobody is perfect. I'm sad, i'm not nobody 🙁

N
232 Beiträge seit 2011
vor 8 Jahren

Eine Idee wäre den gesamten Text in drei Teile zu zerlegen.

  1. Teil: Text bis zum markierten Wort (string a)
  2. Teil: Das markierte Wort (string b)
  3. Teil: Text vom markierten Wort bis zum Textende, exklusive des Wortes selbst (string c)

Soweit alles mit .IndexOf() und SubString() machbar.

Anschließend müssen die Teile wieder zusammengefügt werden, wobei der zweite Teil vorher noch bearbeitet werden muss. Also:

  1. Den zweiten Teil mit HTML Tags versehen (b = "<tag>" + b +"</tag>";)
  2. Die drei Teile wieder zusammenführen (var output = a + b + c;)

Soweit nachvollziehbar?