C# Windows Формы - Требуется руководство для начинающих - Включение кнопки, только если в два текстовых поля введены символы - PullRequest
0 голосов
/ 09 января 2020

Я разрабатываю программу в Visual Studio - Windows Forms c#. net framework для регистрации Gamertags и рекордов участников в игровом конкурсе. У меня есть текстовое поле для ввода пользователем тега игрока и текстовое поле для ввода пользователем рекорда, а затем кнопка для входа в рейтинг игрока и рекорда в два отдельных списка.

Проблема, с которой я сталкиваюсь, заключается в отключении кнопки, пока в полях Gamertag и High Score не будет текста. Это будет очень легко для многих из вас, но я не уверен, как написать код, чтобы это произошло, я покажу, что у меня есть:

Итак, при инициализации компонента у меня есть следующее:

{
    btnAdd.Enabled = !string.IsNullOrEmpty(txtHighScore.Text);
    btnAdd.Enabled = !string.IsNullOrEmpty(txtUsername.Text);
}

Кнопка отключается, как только программа запускается до тех пор, пока не будет введен текст.

Затем, далее, у меня есть код в разделах TextChanged каждого текстового поля

private void txtHighScore_TextChanged(object sender, EventArgs e)
{
    btnAdd.Enabled = !string.IsNullOrEmpty(txtHighScore.Text);
}

private void txtGamertag_TextChanged(object sender, EventArgs e)
{
      btnAdd.Enabled = !string.IsNullOrEmpty(txtGamertag.Text);           
}

Из прочтения вы увидите, что если текст вводится в любое поле, кнопка будет включена, но Я только хочу, чтобы он был включен, если текст был успешно введен в ОБА поля.

1 Ответ

1 голос
/ 09 января 2020

Вы можете установить оба текстовых поля TextChanged события для этого метода, называемого DataChanged (вы можете выбрать нужное имя)

private void DataChanged(object sender, EventArgs e)
{
    btnAdd.Enabled = !string.IsNullOrWhiteSpace(txtHighScore.Text)
        && !string.IsNullOrWhiteSpace(txtGamertag.Text);
}

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

Ваш код не работает, потому что вы включаете / отключаете кнопку, используя только одно текстовое поле одновременно.

...