2017-09-19 1 views
0

Ich benutze diesen Code, aber es funktioniert nicht. Was mache ich hier falsch?Der Etikettentext wird nach der Aktualisierung seines Textes nicht aktualisiert

private void button_input_Click(object sender, EventArgs e) 
{ 
    string input = textbox_input.Text; 
    string output = label_output.Text; 

    output = input.Replace("a", "4"); 
    output = input.Replace("s", "5"); 
    output = input.Replace("e", "3"); 
    output = input.Replace("v", @"\/"); 
    output = input.Replace("V", @"\/"); 
    output = input.Replace("m", "|V|"); 
    output = input.Replace("M", "|V|"); 

    input = output; 
} 

Antwort

3

Sie sollten die output zurück zum textbox zuweisen:

label_output.Text = output; 

Grund dies nicht der Fall funktioniert, dass, obwohl string eine Art Referenz ist es unveränderlich. Dies bedeutet, dass bei Verwendung des Zuweisungsoperators (=) ein neues Objekt mit dem Wert erstellt wird. Wenn Sie Änderungen an der Zeichenfolge vornehmen, erstellen Sie eine neue Instanz mit dem neuen Wert.

Daher ist input kein Verweis auf die gleiche Zeichenfolge wie textbox_input.Text. Und eine Änderung der einen wirkt sich nicht auf die andere aus. Gleiches gilt für output und label_output.Text.


Als Randnotiz als Replace gibt eine Zeichenfolge Sie die Anrufe einen flüssigeren Nutzung zu bekommen Kette:

label_output.Text - textbox_input.Text.Relace("","").Replace("","").....; 
+0

Weil 'input' ein String ist, kein Hinweis auf die' textbox_input. Text' Eigenschaft. – Soviut

+0

@GiladGreen "Ich sah den Rest und ich 'upvote' Sie" :) –

+0

Danke für die klare Antwort, ich bin immer noch ein Anfänger, aber diese Dinge helfen mir sehr! –

Verwandte Themen