2016-07-30 5 views
2

Я попытался закодировать кнопку, чтобы она была отключена при загрузке формы, но включена, как только текстовое поле было введено. Мой код ниже, который, вероятно, знакомо:Включить кнопку, если заполнено текстовое поле

Public Form() 
{ 
    InitializeComponent(); 
    this.button1.enabled = false; 
} 

private void textbox_TextChanged (object sender, EventArgs e) 
{ 
button1.Enabled = !string.IsNullOrWhiteSpace(textbox.Text); 
} 

Кнопка действительно загружает отключена, функция включения не работает при вводе текста, и я не уверен, что может быть проблема. Это модальная форма. Мне было интересно, может, мне нужен был прослушиватель событий (хотя я не уверен, как именно они работают).

+1

Место точки разрыва в строке, где вы установите свойство Включено. Проверьте, правильно ли выполнено событие. Если он не уволен, вы можете пропустить настройку обработчика событий в своем дизайнере. – Han

+0

сделал эту строку 'button1.Enabled =! String.IsNullOrWhiteSpace (textbox.Text);' throw any error? –

ответ

2

Проверьте файл Designer.cs и убедитесь, что у вас есть регистрация обработчика событий. Что-то вроде этого:

this.textBox.TextChanged += new System.EventHandler(this.textBox_TextChanged); 
+0

Привет, Спасибо за помощь. Я попытался добавить регистрацию обработчика, но получил ошибку «Форма не содержит определения для ...». Для чего это стоит, мне удалось добавить обработчик событий в другое текстовое поле, и функция включения кнопок отлично работала там. – emvy03

+0

Извинения, это была глупая ошибка с моей стороны ... Я вообще не объявлял событие textbox_TextChanged. Теперь все работает. Большое спасибо за Вашу помощь! – emvy03

1

Будет ли это работать? Я не вижу проблемы с вашим кодом, хотя ...

button1.Enabled = textbox.Text != ""; 

Надеюсь, это поможет.

0

попробовать это

private void Form1_Load(object sender, EventArgs e) 
{ 
    button1.Enabled = false; 
} 

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    if (string.IsNullOrEmpty(textBox1.Text)) 
    { 
     button1.Enabled = true; 
    } 
} 
1

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

button1.Enabled = textbox.Text.Length > 0; 
0

Вы можете попробовать одно из следующих действий на TextChanged свойстве TextBox:

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    if (textbox.Text.Length > 0) 
    { 
     button1.Enabled = true; 
    } 
    else 
     button1.Enabled = false; 
} 

или, используя метод string.IsNullOrEmpty:

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrEmpty(textbox.Text)) 
    { 
     button1.Enabled = true; 
    } 
    else 
     button1.Enabled = false; 
} 

ниже линии:

button1.Enabled = !string.IsNullOrWhiteSpace(textbox.Text); 

Если это не работает для вас, или если вы получаете сообщение об ошибке, то, возможно, потому что метод IsNullOrWhiteSpace был введен в . NET 4

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