Как обновить метку при изменении значения TextBox? - PullRequest
1 голос
/ 16 апреля 2019

Есть ли способ обновить метку при вводе значений в textBox?

Пользователь может ввести свой уровень в текстовое поле, которое затем сообщит ему, какой у него множитель для этого уровня. В тот момент, когда пользователь вводит число в поле уровня, множитель не обновляется, пока я не щелкну в раскрывающемся меню и не выберу вариант, который был у меня ранее.

Например; если пользователь вводит 50 для своего уровня, то множитель будет равен 1. Если он введет> = 92, то множитель покажет 2. Но он не обновляется, когда значение вводится в текстовое поле.

В настоящее время для каждого объекта, который я поместил, он находится в футляре коммутатора, поэтому им легче управлять.

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

level - это текстовое поле, в которое пользователь может поместить свой уровень, которое затем должно обновить метку множителя.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Ну, почему бы тебе не сделать это немного проще? Примерно так (на вашем примере):

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;
    }
}
0 голосов
/ 16 апреля 2019

Для этого есть разные подходы. Посмотрите на события, доступные в вашем текстовом поле.Например, вы можете использовать OnLeave и т. Д.

Лучший способ - это получать уведомления с помощью подхода «INotifyChanged», который является принципиально лучшим способом сделать это с точки зрения дизайна.

Надеемся,это поможет вам решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...