当TextBox值更改时,如何更新Label?

时间:2019-04-16 15:34:19

标签: c# winforms

在文本框中输入值时,是否可以更新标签?

用户可以在一个文本框中输入其等级,然后它将告诉他们该等级的乘数是多少。此刻,当用户在级别字段中输入数字时,乘数不会更新,直到我单击下拉菜单并重新选择我以前使用的选项。

例如;如果用户输入其级别的50,则乘数将为1。如果输入> = 92,则乘数将显示2。但是,由于在文本框中输入值,该乘数不会更新。

目前,对于每个对象,我都将它们放置在Switch Case中,以便于管理。

        private void Level_TextChanged(object sender, EventArgs e)
        {
            RuneMultiplier.Refresh();
        }

level是用户能够放置其关卡的文本框,然后应更新乘数标签。

2 个答案:

答案 0 :(得分:0)

好吧,为什么不把它简化一些呢?像这样(以您的示例为例):

private void textBox3_TextChanged(object sender, EventArgs e)
{
   if(textBox3.Text == "50")
   {
       label1.Text = (int.Parse(textBox3.Text) * 1).ToString();
   }else if(int.Parse(textBox3.Text) >= 92)
   {
        label1.Text = (int.Parse(textBox3.Text) * 2).ToString(); 
   }
   else
   {
        //this is not a number, some error message idk..
   }       
}

每次您在文本框中输入内容时,都会根据您的if条件更新标签或引发一些错误。

编辑

类似这样的东西:

private void textBox3_TextChanged(object sender, EventArgs e)
{
switch (int.Parse(textBox3.Text))
{
    case 50:
        label1.Text = (int.Parse(textBox3.Text) * 1).ToString();
    break;
    case int number when number >= 92:
        label1.Text = (int.Parse(textBox3.Text) * 2).ToString();
    break;
    case int number2 when number2 < 50:
        label1.Text = (int.Parse(textBox3.Text) * 0).ToString();
    break;
    default:
        //not a number
    break;
    }
}

答案 1 :(得分:-1)

有不同的方法可以做到这一点 看一下文本框中可用的事件。 例如,您可以使用OnLeave等。

一种更好的方法是通过“ INotifyChanged”方法获得通知,这是从设计的角度来看这样做的根本性更好的方法。

希望这可以帮助您解决问题。