Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding an event handler for a control in child form from parent form in C#

I have two forms. One is a parent form with a button and a text box. On click of the button, a dialog opens the child form which in turn has a textbox and a button. Now what I want is whenever the text in the child form textbox changes the text in the parent form textbox changes automatically. To acquire this, what I did is:

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";
    }

I added the above code in the parent form and the child form is Form3. But nothing happens, the parent form textbox still doesn't change even after changing the text in the child form. What am I doing wrong here?

like image 543
swordfish Avatar asked Dec 04 '22 21:12

swordfish


1 Answers

You can add event in child form and rise it when text changed. Then create event handler in parent form and change text in parent form. In child form:

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

In parent form:

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;
}

Hope it helps.

like image 163
Renatas M. Avatar answered Dec 29 '22 01:12

Renatas M.