Laden...

Richtextbox Cursor/Caret Position auslesen und setzen

Erstellt von blutiger_anfänger vor 15 Jahren Letzter Beitrag vor 15 Jahren 3.464 Views
B
blutiger_anfänger Themenstarter:in
293 Beiträge seit 2008
vor 15 Jahren
Richtextbox Cursor/Caret Position auslesen und setzen

Hallo erstmal,
ich bin auf der Suche nach einer Möglichkeit die Postion des Cursors in einer Richtextbox auszulesen und wieder zu setzen.

Folgendes Problem. Ich möchte, dass bestimmt Wörter, sollten sie eingetippt werden in der Box, Rot angezeigt werden. Das klappt auch schon ganz gut.

private void richTextBox1_TextChanged(object sender, EventArgs e)
        {
           
                       

            if (richTextBox1.Text.Contains("#Uploadtitel#") == true)
            {
                richTextBox1.Select(richTextBox1.Text.IndexOf("#Uploadtitel#"), 13);
                richTextBox1.SelectionColor = Color.Red;
            }
richTextBox1.DeselectAll();


}

Wenn ich jetzt jedoch weiterschreiben will, springt er jedes mal mit dem Cursor hinter das Wort. Logisch, da nach dem DeselectAll(); der Cursor hinter dem letzten markierten Wort ist. Das macht ein Arbeiten leider unmöglich. Nun dachte ich mir ich frage vor dem Markieren der entsprechenden Wörter die Cursor Postion ab und setze den Cursor nach dem DeselectAll(); wieder an seine ursprängliche Position.

Jedoch hab ich keinen schimmer, wie ich die Position auslesen/setzen kann.

Ich hatte zwar auch schon das hier gefunden: http://msdn.microsoft.com/en-us/library/system.windows.controls.richtextbox.caretposition.aspx aber das ist nur für Vista und da ich mit XP arbeite bringt mich das leider auch nicht weiter.

Ich hoffe die Problematik ist ersichtlich und ihr könnt mir helfen.

Liebe Grüße,
ein blutiger Anfänger

Wenn ich nicht hier bin, findest du mich auf code-bude.net.

5.742 Beiträge seit 2007
vor 15 Jahren

Hallo blutiger_anfänger,

Ich möchte, dass bestimmt Wörter, sollten sie eingetippt werden in der Box, Rot angezeigt werden.

Da würde ich dir eher zu dem Ansatz raten, der in [Tutorial] Einfaches Keyword-Highlighting vorgestellt wird. Er ist deutlich flackerfreier und resourcenschonender als deiner.

Die entsprechende Property der WinForms RichTextBox heißt SelectionStart.

aber das ist nur für Vista und da ich mit XP arbeite bringt mich das leider auch nicht weiter.

Nein, das ist auch für XP.
Allerdings ist das die Doku zur gleichnamigen RichTextBox der WPF.

if (richTextBox1.Text.Contains("#Uploadtitel#") == true)

Siehe: [Tipp] Anfängerfehler == true / == false

B
blutiger_anfänger Themenstarter:in
293 Beiträge seit 2008
vor 15 Jahren

Ich danke dir für die schnelle Antwort. Haut alles wunderbar hin mit SelectionStart - hätt' ich auch früher draufkommen können, dachte bloß wenn ich nicht's markiert hab gibt's auch kein SelectionStart. 😉

Was die Sache mit dem "Anfängerfehler" angeht lass ich mich natürlich auch gern belehren.

Liebe Grüße,
ein blutiger Anfänger

Wenn ich nicht hier bin, findest du mich auf code-bude.net.