Добавление обработчика событий для элемента управления в дочерней форме из родительской формы в C # - PullRequest
3 голосов
/ 17 июня 2011

У меня есть две формы. Одним из них является родительская форма с кнопкой и текстовым полем. При нажатии на кнопку открывается диалоговое окно дочерней формы, которая в свою очередь имеет текстовое поле и кнопку. Теперь я хочу, чтобы когда текст в текстовом поле дочерней формы изменял текст, текст в текстовом поле родительской формы изменялся автоматически. Чтобы приобрести то, что я сделал,

Form3 f3 = new Form3();
f3.delBetInpTxt.TextChanged +=new EventHandler(delBetInpTxt_TextChanged);
public void delBetInpTxt_TextChanged(object sender, EventArgs e)
    {
        TextBox t = (TextBox)sender;
        simDelTxt.Text = t.Text + " ms";
    }

Я добавил вышеуказанный код в родительскую форму, а дочерняя форма - Form3. Но ничего не происходит, текстовое поле родительской формы все еще не изменяется даже после изменения текста в дочерней форме. Ват, я тут не так делаю.

1 Ответ

13 голосов
/ 17 июня 2011

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

public event EventHandler OnChildTextChanged;
private void textBox1_TextChanged(object sender, EventArgs e)
{
    if(OnChildTextChanged != null)
       OnChildTextChanged(textBox1.Text, null);
}

В родительской форме:

private void button1_Click(object sender, EventArgs e)
{
    ChildForm child = new ChildForm();
    child.OnChildTextChanged += new EventHandler(child_OnChildTextChanged);
    child.ShowDialog();
}

void child_OnChildTextChanged(object sender, EventArgs e)
{
    textBox1.Text = (string)sender;
}

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

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