2016-04-14 17 views
1

Wie würde ich es so machen, dass, wenn ein Benutzer '{' in eine Richtextbox eingibt, er die nächste Zeile für sie auswählt? Zum BeispielAuswählen einer bestimmten Zeile in der richtextbox

private void richTextBox1_TextChanged(object sender, EventArgs e) 
    { 
     if (richTextBox1.Text.Contains("{")) 
     { 
      richTextBox1.AppendText(Environment.NewLine + " "); // line 1 
      // Put user on line 1 
      richTextBox1.AppendText(Environment.NewLine + "}"); // line 2 
     } 
    } 
+0

Möchten Sie Text zwischen geschweiften Klammern in einer neuen Zeile einfügen, oder? ex .. {Hello {world}} sollte als zwei Zeilen Hallo und Welt angezeigt werden? –

+0

@HariPrasad yep. – conjure

+0

Wäre es nicht gut, wenn Sie stattdessen das Key - Press - Ereignis behandeln? Versuchen Sie grundsätzlich, den Vorgang nur auszuführen, wenn die aktuelle Taste "{" gedrückt ist. Im Augenblick sucht der Code nach ganzen Text in richTextBox1, so dass sich jeder Text nach der ersten geschweiften Klammer mehrmals wiederholen würde. Es ist vollkommen in Ordnung, wenn Sie das erreichen wollen, aber nur erwähnen wollen. –

Antwort

2

Sie können dies tun, indem die Länge des Textfeldes vor Ende der zweite Zeile hinzufügen, und wählen Sie dann 0 Zeichen am Ende des es nach der zweiten Zeile hinzufügen.

private void richTextBox1_TextChanged(object sender, EventArgs e) 
{ 
    if (richTextBox1.Text.Contains("{")) 
    { 
     richTextBox1.AppendText(Environment.NewLine + " "); // line 1 
     int lastIndex = richTextBox1.Text.Length - 1; 
     richTextBox1.AppendText(Environment.NewLine + "}"); // line 2 
     richTextBox1.SelectionStart = lastIndex; 
     richTextBox1.SelectionLength = 0; 
    } 
} 
Verwandte Themen