С# Windows Forms — требуется руководство для начинающих — включение кнопки только в том случае, если в два текстовых поля введены символы

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

Проблема, с которой я сталкиваюсь, заключается в отключении кнопки до тех пор, пока в полях 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);           
}

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


person Melby    schedule 09.01.2020    source источник


Ответы (1)


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

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

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

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

person Marco    schedule 09.01.2020
comment
Большое спасибо за это совершенно правильно, я действительно пытался это сделать сначала, как я делал в прошлом, однако получил ошибку для «&&» и не мог понять, почему, очевидно, делал что-то не так. еще раз спасибо! - person Melby; 10.01.2020