标签文本在更新其文本后不会更新

时间:2017-09-19 18:08:18

标签: c#

我使用此代码但它无效。我在这做错了什么?

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

1 个答案:

答案 0 :(得分:3)

您应该将output分配回textbox

label_output.Text = output;

它不起作用的原因是虽然string是引用类型,但它是不可变的。这意味着当您使用赋值运算符(=)时,将创建一个包含该值的新对象。无论何时对字符串应用任何更改,您实际上都是使用新值创建新实例。

因此,input不是对textbox_input.Text相同字符串的引用。而改变一方并不会影响另一方。同样适用于outputlabel_output.Text

作为旁注,Replace返回一个字符串,您可以链接调用以获得更流畅的用法:

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