Du musst genau hinschauen, welche Eigenschaft und welche Methode für welchen Zweck geeignet ist. ToString ist eine Standardmethode, die für jedes Objekt vorhanden ist und unterschiedliche Werte liefert. Bei der RTB dürfte es immer der Text "System.Windows.Forms.RichTextBox" sein...
Du willst aber den nackten
Text haben. Rate einmal, wie diese Eigenschaft lauten könnte. Das ist der erste Hauptfehler.
Weitere Fehler oder Ungereimtheiten:
C#-Quelltext
1: 2:
| String eingabe = " "; eingabe = richTextBox1.ToString(); |
Es ist überflüssig, einen solchen Wert wie " " festzulegen, wenn er in der nächsten Zeile sowieso überschrieben wird (abgesehen davon, dass der Standardwert String.Empty lautet). Wenn die passende Eigenschaft sowieso ein String ist (das ist sie nämlich), kann sie auch direkt verwendet werden und muss nicht mit einer eigenen Variablen doppelt registriert werden.
Die Zeichen eines Strings sind sowieso eine Zeichenkette. Du kannst sofort per Index auf ein bestimmtes Zeichen zugreifen:
C#-Quelltext
1:
| char c = myRTB.Text[0]; |
Das Hin und Her über ToCharArray und Convert.ToString ist völlig überflüssig.
Übrigens sind auch die Convert-Methoden fast immer überflüssig; dieses Konvertieren geht mit ToString (aber das nur der Vollständigkeit halber, das braucht man hier gar nicht):
C#-Quelltext
1:
| string newString = c.ToString(); |
Der zweite Hauptfehler ist außerdem: Dein Verfahren schmeißt den gesamten Text weg und behält nur das erste (falsche) Zeichen. Wenn du dagegen die richtige Eigenschaft für den Text nimmst und
SelectionStart=0 und
SelectionLength=1 benutzt, bezieht sich die SelectionColor genau auf den richtigen Bereich; und der gesamte Text wird überhaupt nicht geändert.
Gruß Jürgen