2011-01-27 6 views

ответ

3

Как это WinForms, вы должны контролировать TextChanged событие на ваших текстовых и вызвать метод, который обновляет разрешенное состояние вашей кнопки (string.IsNullOrEmpty и string.IsNullOrWhiteSpace полезны здесь).

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

private void OnTextChanged(object sender, EventArgs args) 
{ 
    UpdateUserInterface(); 
} 

private void UpdateUserInterface() 
{ 
    this.myButton.Enabled = !string.IsNullOrWhiteSpace(this.textBox1.Text) && 
          !string.IsNullOrWhiteSpace(this.textBox2.Text); 
} 

Если вы хотите сделать что-то более сложное и трудоемкое для определения состояния блокировки, вы можете рассмотреть то, что задерживает обновление состояния кнопки, пока типирование не будет сделано. Например, таймер с небольшим интервалом, который перезапускается каждый раз, когда событие TextChanged запускается и останавливается в своем собственном обработчике событий Tick, где вы, наконец, вызываете метод UpdateUserInterface.

сторона отмечает
Поскольку обучение этого приложение WinForms, я понижен следующие пункты в сторону струн для тех, кто охотится этой информацией.

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

Для ASP.NET это может быть сделано на стороне клиента с помощью javascript - присоединение к событиям текстовых полей onChange и тестирование как для значений *.

** Благодаря Oded для этой дополнительной информации. *

+0

В asp.net это может быть сделано с клиентской стороны с javascript - присоединением к событиям onChange из текстовых полей и тестированием для значений. – Oded

+0

@Oded: Спасибо, я обновлю ответ, чтобы накрыть это. –

+0

это в C# WinForms. –

2

В Winfoems или WPF, крюк в события TextChanged обоих TextBoxes с одним обработчиком. В этом обработчике просмотрите текущий текст обоих текстовых полей (не заходите слишком глубоко, так как событие срабатывает при каждом нажатии клавиши, поэтому глубокая проверка замедлит реакцию пользовательского интерфейса), и если тексты не пусты или только пробелы, включите кнопку; в противном случае отключите его.

В ASP.NET вам необходимо использовать JavaScript. Аналогичное событие OnChanged для текстовых полей в DOM, для которого вы можете назначить функцию Javascript, которая будет выполнять аналогичное задание, как в WinForms. Будьте осторожны, поскольку браузеры могут запускаться с отключенным JavaScript, поэтому вам по-прежнему необходимо проверить значение null на стороне сервера и убедиться, что кнопка по умолчанию не отключена (только с помощью JavaScript, либо с функцией OnChanged, либо с чем-то, что работает на загрузка документа).

Смежные вопросы