Проблема с кнопкой при вводе текста в текстовое поле - PullRequest
1 голос
/ 30 июня 2011

Я пытаюсь сделать кнопку сохранения видимой, когда текст вводится в текстовое поле, используя следующий код:

    if (tbName.TextModified == true)
    {
        btnCTimetablesOk.Visible = true;
    }
     else
    {
        btnCTimetablesOk.Visible = false;
    }

но выдает ошибку в tbname.textmodified

есть ли другой способ увидеть кнопку, когда мы вводим текст в текстовое поле

это ошибка, которую я получаю "событие textbox.textmodified может появляться только в левой части + = или - ="

Ответы [ 3 ]

2 голосов
/ 30 июня 2011

Попробуйте использовать Enter и Leave событий текстового поля, чтобы показать / скрыть кнопку:

private void textBox1_Enter(object sender, System.EventArgs e)
{
    btnCTimetablesOk.Visible = true;
}

private void textBox1_Leave(object sender, System.EventArgs e)
{
    btnCTimetablesOk.Visible = false;
}

Затем измените текстовое поле, чтобы использовать этиновые методы.

enter image description here

1 голос
/ 01 июля 2011

Я собираюсь сделать здесь удар в темноте и предположить, что кнопка связана с текстовым полем, и вы, вероятно, хотите, чтобы кто-то мог что-то набрать в текстовом поле, а затем нажмите кнопку.Вы, вероятно, не хотите, чтобы пользователь что-то печатал, затем вкладывал или щелкал где-то еще, чтобы сделать кнопку видимой , а затем нажмите кнопку.1007 * Между прочим, вы получаете эту ошибку, потому что TextModified не является логическим свойством, это событие, как TextChanged или Leave или Enter.Вы можете назначить ему обработчик событий, но не можете просто так его проверить.

Кроме того, я лично ненавижу * системного венгра * для элементов управления winforms.Я бы предпочел иметь расписания OKButton, а не кнопку btnCTimeablesOK.Таким образом, если у вас также есть schedulesNameTextBox, вы сразу увидите, что кнопка и текстовое поле совпадают.Конечно, это может не зависеть от вас.

1 голос
/ 30 июня 2011

Если я правильно читаю ваш текст, вы хотите, чтобы кнопка сохранения была видимой, когда текстовое поле содержит текст , и невидимой, если текстовое поле пустое.Если это так, вы можете использовать событие Leave (которое происходит, когда текстовое поле теряет фокус) и простой оператор if:

private void textBox1_Leave(object sender, System.EventArgs e)
{
  if(textBox1.Text != "")
    btnCTimetablesOk.Visible = true;
  else
    btnCTimetablesOk.Visible = false;
}

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

Кроме того, вы можете рассмотреть возможность использования Enabled вместо Visible, он оставит кнопку на форме, но затеняет текст, а нажатие ничего не даст.

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