Событие c # textbox для ввода только пользователем - PullRequest
7 голосов
/ 12 марта 2011

У меня есть элемент управления Textbox, который иногда обновляется программно, а также может быть обновлен пользователем. как я могу различить эти два события? Мне бы хотелось, чтобы флаг "Грязный" был установлен в "true", когда пользователь изменяет текст.

Ответы [ 5 ]

9 голосов
/ 25 сентября 2017

Проверьте измененное свойство TextBox для события TextChanged.Если true, изменения были сделаны пользователем, в противном случае текст был изменен программно.

Пример:

void Texbox_TextChanged(object sender, EventArgs e)
{
    if (((TextBox)sender).Modified)
        TextboxUserInput();
}
7 голосов
/ 12 марта 2011

Вы можете использовать событие Key Down текстового поля.

  private void textBox1_KeyDown(object sender, KeyEventArgs e)
  {
      // Insert the code you want to run when the text changes here!
  }
5 голосов
/ 24 сентября 2011

мое решение работа для печати, копирования и вставки

    private void TextChanged(object sender, EventArgs e)
    {
        if (((TextBox)sender).ContainsFocus)
        {

        }
    }
3 голосов
/ 12 марта 2011

избегайте установки флага «грязный», когда это делается программно.Отключить обработчик событий или установить флаг, который говорит: «это код, а не пользователь»

0 голосов
/ 12 марта 2011

попробуй Blur

это поймает момент, когда пользователь покидает поле.

Вы можете использовать его вместе с onFocus, чтобы сохранить значение перед редактированием

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