Reference a form from subform in C#.net

You're getting a null because your active form is the one you're in and it is not of type frmMain. (I think you may actually be confusing an active form for a parent form?)
There are so may ways to do this. You could make your frmMain a singleton but that's weird and ugly and not recommended of late or you could pass a reference of it to its children somehow. Here's one, simple way:

Main Form:
public partial class frmMain : Form
{
    public frmMain()
    {
        InitializeComponent();
    }

    // Main form
    private void MainFrm_Load(object sender, EventArgs e)
    {
        FormOrder frmO = new FormOrder(this); // pass a ref of self

        frmO.Show();
    }

    public void Refresh() 
    {
        // some action
    }
 }
Sub Form:
 public partial class FormOrder : Form
{
    private frmMain _parent; // create a field that refers to the parent
    public FormOrder(frmMain parent) // mod the constructor
    {
        if (parent == null) throw new NullReferenceException("Can't be NULL!!!"); // check clause

        _parent = parent; // assign the ref of the parent

        InitializeComponent();
    }

    private void ShowForm()
    {
        // some action
    }

    private void btnCopy_Click(object sender, EventArgs e)
    {
            _parent.Refresh(); // make the call to parent
    }
}
Thanks : Stackoverflow

Comments

Popular

Create a well designed OOP project in Java(Using Netbeans)