Annamalai
Annamalai

Reputation: 55

How to return to the calling method after calling a windows Form in c#?

I have a method, where I call a new Windows Form in Class A. And in the new Form, I use a Dropdown menu and store the selected Item from the Dropdown in a variable, called selectedItem.Now I have to access this selectedItem in Class A. I use the following code.

public class A
{
    public method callingmethod()
    {
        ExceptionForm expform = new ExceptionForm();
        expform.Show();
        string newexp = expobj.selectedexception;
    }
}

And my code in New Form,

public partial class ExceptionForm : Form
{
    public string selectedexception = string.Empty;
    private void btnExpSubmit_Click(object sender, EventArgs e)
    {
        selectedexception = this.comboBox1.GetItemText(this.comboBox1.SelectedItem);
        this.Close();
        return;
    }
}

Now After clicking on Submit button, I get the correct value in selectedItem, But I could not pass it to Class A. How to retun to Class A?

Upvotes: 3

Views: 478

Answers (2)

praty
praty

Reputation: 573

If you are ok with posting ExceptionForm over parent form by disabling it, go for ShowDialog. But, if you do not wish to disable parent for and continue popping ExceptionForm as a new and independent window, try eventing back to parent form. Here I show an example on how to do so:

public partial class ExceptionForm : Form
{
    public delegate void SelectValueDelegate(string option);
    public event SelectValueDelegate ValueSelected;

    private void btnExpSubmit_Click(object sender, EventArgs e)
    {
        this.Close();

        if (this.ValueSelected!= null)
        {
            this.ValueSelected(this.comboBox1.GetItemText(this.comboBox1.SelectedItem));
        }

        return;
    }
}

And in calling class:

public class A
{
    public method callingmethod()
    {
        ExceptionForm expform = new ExceptionForm();
        expform.ValueSelected += ExceptionForm_ValueSelected;
        expform.Show();
    }

    private void ExceptionForm_ValueSelected(string option)
    {
        string newexp = option;
        // Do whatever you wanted to do next!
    }
}

Upvotes: 1

Dmitry
Dmitry

Reputation: 518

Use ShowDialog() method.

expform.ShowDialog();
string newexp = expobj.selectedexception;

Upvotes: 1

Related Questions