Отправить имя текстового поля в пользовательский метод при изменении текста - PullRequest
0 голосов
/ 09 августа 2010

В моей форме много текстовых полей. Когда одно из текстовых полей изменяется, я хочу отправить имя текстового поля и его новое значение методу. Как мне это сделать?

Ответы [ 2 ]

3 голосов
/ 09 августа 2010

Регистрация для события OnTextChanged для рассматриваемых текстовых полей:

txtBox1.OnTextChanged += new TextChangedEventHandler(txtBox_OnTextChanged);
txtBox2.OnTextChanged += new TextChangedEventHandler(txtBox_OnTextChanged);
txtBox3.OnTextChanged += new TextChangedEventHandler(txtBox_OnTextChanged);
// And so on...

А потом:

public void txtBox_OnTextChanged(object sender, EventArgs e)
{
    var textBox = (TextBox)sender;

    OtherMethod(textBox.Name, "Some New Value");
}

public void OtherMethod(string name, string value)
{
    // Do whatever here
}
1 голос
/ 09 августа 2010

Свяжите событие текстового поля «Text Changed» с функцией, а затем отправьте элементы этого текстового поля методу:

private void myTxtbox_TextChanged(object sender, EventArgs e)
{
    //Call the method with the name and value of the text box
    myMethod(myTextBox.Name, myTextBox.Text);
}

Просто сделайте это для каждого текстового поля в форме.

РЕДАКТИРОВАТЬ: ЗДЕСЬ ОБЩИЙ КОД

Вот общий код для текстового поля:

private void allTxtBox_TextChanged(object sender, EventArgs e)
{
    //'sender' is the text box who's text was just changed
    string name = ((TextBox)sender).Name;
    string text = ((TextBox)sender).Text; //This will be the new text in the text box

    //Call the method with the name and value of the text box
    myMethod(name, text);
}

Используя этот метод, просто свяжите событие TextChanged каждого текстового поля с этой единственной функцией. Это легко сделать в редакторе событий в окне «Свойства» в Visual Studio.

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