Я хочу вызвать функцию при изменении текста в текстовом поле. Функция просто проверяет, содержит ли текстовое поле какой-либо текст, и, если он это делает, отметит флажок, как отмечено. У меня есть несколько текстовых полей и флажков для этого, поэтому я хочу функцию, которую я могу вызвать каждый раз, когда мне это нужно сделать
private void autoCheckChkBoxes(CheckBox theChkBox, TextBox theTxtBox)
{
if (theTxtBox.Text != "")
{
theChkBox.Checked = true;
}
else
{
theChkBox.Checked = false;
}
}
Затем я в дизайнере подключил функцию до события TextChanged для флажка
this.txtBox.TextChanged += new System.EventHandler(this.autoCheckChkBoxes(thecheckbox, txtBox));
Но это дает мне следующую ошибку, которую я раньше не видел:
Method name expected
Я что-то пропустил?
Вы можете подписаться на событие TextChanged
и вызвать свой метод в одной строке следующим образом:
textBox1.TextChanged += (s,a) => autoCheckChkBoxes(thecheckbox, textBox1);
textBox2.TextChanged += (s,a) => autoCheckChkBoxes(theNextCheckbox, textBox2);
// etc...
Добавьте эти строки в свой конструктор, чтобы вы только подписывались на событие один раз для каждого элемента управления.
Параметры s
и a
являются параметрами "отправитель" и "eventArgs", которые вы обычно видите в методе обработчика событий. На самом деле вы могли бы направить "отправителя" в правильный TextBox
, но он не спасет вас здесь...
textBox1.TextChanged += (sndr,args) => autoCheckChkBoxes(thecheckbox, (TextBox)sndr);
textBox2.TextChanged += (sndr,args) => autoCheckChkBoxes(theNextCheckbox, (TextBox)sndr);
Когда я сказал, что это в конструкторе, я имел в виду конструктор вашей Form
, а не внутри метода InitializeComponent()
:
public class YourForm : Form
{
public YourForm()
{
InitializeComponent();
textBox1.TextChanged += (s,a) => autoCheckChkBoxes(thecheckbox, textBox1);
textBox2.TextChanged += (s,a) => autoCheckChkBoxes(theNextCheckbox, textBox2);
// etc...
}
...
}
Метод autoCheckChkBoxes
не является допустимым обработчиком событий. Подпись обработчика событий
void (object sender, EventArgs e)
Пример:
this.txtBox.TextChanged += txtBox_TextChanged;
private void txtBox_TextChanged(object sender, EventArgs e)
{
thecheckbox.Checked = !String.IsNullOrEmpty(txtBox.Text);
}
Создайте EventHandler и в этом вызовите функцию
this.txtBox.TextChanged += new System.EventHandler(this.textBox1_Textchanged);
private void textBox1_TextChanged(object sender, EventArgs e)
{
autochecBoxes(thechckbox, txtbox);
}
TextBox
, добавить CheckBox
в качестве собеседника и переопределить text Changed
Обработчик изменения?
(s,a) =>
?