Hi All,

I am having this issue and don't really know a good way to overcome it. I have a main form. With a click of a button another form is created. For the example let's just say it has a simple text box. You type whatever you want in it.

My problem arises is how do I get the string from that child class to the calling class.

private void OpenForm_Click(object sender, EventArgs e)
        {
            this.ChildClass = new TextboxForm();
            this.ChildClass.Show();           
           //Before the class loses scope and gets GC'ed I can call a property of the child class
          
          string strTemp = this.ChildClass.UserString;

        //But the problem is after it shows the form it immediatly assigns the strTemp with null or "" because the user hasn't even had time to type something in the box.

        }

So what I would like to know is a a good solution for when the child form closes it can somehow pipe back information to the parent class. I tried doing some research and a delegate kept popping in my head but through frustration couldn't get them working. So is a delegate a good solution for this or am I completely missing something.

I give an alternative to do so:
First:
Create a class in witch u create a static string variable
Here is the procedure:
first step:

public class Variables
{
public static string myVariable ="";
}

Second step:
In the event handler ChildForm_Formclosing(object sender, EventArgs e)
implement it as follow
ChildForm_Formclosing(object sender, EventArgs e)
{
Variables.MyVariable=TextBox.Text.ToString();
}

Third step:
In the Main form

//define an instantiate a new ChildForm
ChildForm oChildForm = new ChildForm();
//Add a new event
oChildForm.FormClosing+= new EventHandler(ChildForm_FormClosing)
{
TextBox1.Text = Variables.MyVariable;
}

Ok, sounds simple but how about a child form having a read only property that can hold a string.
Once the child form closes, this property should still be available immediately after.

change

this.ChildClass = new TextboxForm();
this.ChildClass.Show();
to

this.ChildClass = new TextboxForm();
this.ChildClass.ShowDialog(this);

This question has already been answered. Start a new discussion instead.