2017-05-06 6 views
0

Ich versuche, eine Windows Form Application in Visual Studio zu erstellen. Was ich versuche zu tun ist, wenn der Benutzer etwas in die RichTextBox eingibt, löscht er das, was Sie eingeben, und ersetzt ihn durch einen voreingestellten Buchstaben. Was ich bisher habe ist:Ersetzen von eingegebenem Text durch voreingestellten Text C#

private void richTextBox1_TextChanged(object sender, EventArgs e) 
{ 
    string text = richTextBox1.Text; 
    richTextBox1.Text = text.Remove(text.Length - 1, 1); 
} 

Also wenn Sie einen Buchstaben eingeben löscht es es. Was ich danach möchte, ist, dass ein Buchstabe eines voreingestellten Textes hinzugefügt wird. Nehmen wir an, Sie haben den Text This is a test text that is reasonably long. Wenn der Benutzer 'A' eingibt, erscheint stattdessen der Buchstabe 'T'. Wenn der Benutzer einen anderen Buchstaben eingibt, erscheint stattdessen der nächste Buchstabe "h" und so weiter, bis der Volltext This is a test text that is reasonably long angezeigt wird und Sie dann nicht mehr tippen können.

ist hier mehr Code bei Bedarf:

private void button6_Click(object sender, EventArgs e) 
{ 
    webBrowser1.Navigate(textBox1.Text); 
} 

private void button5_Click(object sender, EventArgs e) 
{ 
    webBrowser1.Navigate("www.google.com"); 
} 

private void richTextBox1_TextChanged(object sender, EventArgs e) 
{ 
    string text = richTextBox1.Text; 
    richTextBox1.Text = text.Remove(text.Length - 1, 1); 
} 
+0

richTextBox1.Text = Text.Substring (0, RichTextBox1.Length); ? – VirCom

Antwort

0

Sie etwas ähnliches wie dies tun können.

public string longText = "This is a test text that is reasonably long"; 
private void RichTextBox1_TextChanged(object sender, EventArgs e) 
{    
    // I don't know if the user can press enter 
    // and give you an empty string so this checks that 
    // and that richTextBox1.Text is not greater than the 
    // text you want replace with, in this case longText 
    if (richTextBox1.Text.Length <= longText.Length && richTextBox1.Text.Length > 0) 
    { 
     string text = richTextBox1.Text; 
     // removes the last character, Remove returns 
     // a new string so you have to save it somewhere 
     text = richTextBox1.Text.Remove(text.Length - 1, 1); 
     // here you add the character you want to replace 
     text += longText[richTextBox1.Text.Length - 1]; 
     richTextBox1.Text = text; 
    } 
    else if (richTextBox1.Text.Length > longText.Length) 
    { 
     // this case is when the user wants to add another 
     // character but the whole text it's been already replaced 
     richTextBox1.Text = richTextBox1.Text.Remove(richTextBox1.Text.Length - 1, 1); 
     } 
    } 

Lassen Sie mich wissen, ob dies Ihnen hilft.

+0

Willkommen bei SO. Bitte lesen Sie diese [how-to-answer] (http://stackoverflow.com/help/how-to-answer) für eine qualitativ hochwertige Antwort. – thewaywewere

+0

Ich habe einen Fehler in der Zeile "if (rangeredText.Length <= longText.Length)", sagen, dass "System.NullReferenceException: 'Objektverweis nicht auf eine Instanz eines Objekts festgelegt.'" Und "angereicherteText wurde Null". Gibt es etwas, das ich in deiner Antwort vermisse? – MainframeHacker

+0

Sorry @ MainframeHacker, ich habe etwas mit meinem VS gemacht und ich konnte das nicht testen. Ich habe die Antwort bereits bearbeitet und eine bessere gegeben, ich denke hehe. Grüße! – santipl

Verwandte Themen