C # ждать, пока пользователь закончит вводить текстовое поле - PullRequest
25 голосов
/ 04 ноября 2011

Есть ли способ в C # подождать, пока пользователь закончит вводить текстовое поле, прежде чем вводить введенные значения, не нажимая enter?

Немного изменил этот вопрос:

Хорошо, яу меня есть простой калькулятор, который умножается на 2.

Вот что я хочу сделать: пользователь вводит значение, например 1000, в текстовое поле, и оно автоматически отображает 2000.

Вот что происходит: Как только пользователь входит в 1, он умножается на 2 и выдает 2.

Ответы [ 13 ]

1 голос
/ 04 ноября 2011

Вы хотите использовать дескриптор события Leave или LostFocus для рассматриваемого текстового поля.Я предполагаю, что вы используете WinForm, даже если вы не указали это в своем вопросе.

0 голосов
/ 18 апреля 2018

Мой коллега предложил решение с использованием Rx и регулирования событий:

var FindDelay = 500;//milliseconds
//textBox is your text box element
Observable.FromEventPattern<EventArgs>(textBox, "TextChanged")
    .Select(ea => ((TextBox) ea.Sender).Text)
    .DistinctUntilChanged()
    .Throttle(TimeSpan.FromMilliseconds(FindDelay))
    .Subscribe(text => { 
        //your handler here 
    });
0 голосов
/ 04 ноября 2011

Что, если вы инициируете событие, основанное на нажатии клавиши, например tab или return?

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