2017-09-19 86 views
0

我使用此代碼,但它不起作用。我在這裏做錯了什麼?更新文本後標籤文本未更新

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; 
} 

回答

3

你應該分配outputtextbox

label_output.Text = output; 

原因,它不工作,雖然string是引用類型是不可改變的。這意味着當您使用賦值運算符(=)時,會創建一個包含該值的新對象。無論何時對字符串應用任何更改,您實際上都會使用新值創建新實例。

因此input不是對與textbox_input.Text相同的字符串的引用。一個變化不會影響另一個。同樣適用於outputlabel_output.Text


作爲一個側面說明作爲Replace返回你可以鏈的調用,以獲得更流暢的使用的字符串:

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

因爲'input'是一個字符串,而不是到'textbox_input的參考。文本'屬性。 – Soviut

+0

@GiladGreen「我看到了其餘的,我會'upvote'你':) –

+0

感謝您明確的答案,我仍然是一個新秀,但這些事情幫助我很多! –