Search code examples
c#oop

How to access one object from another form in C#?


Let's say I have "Form1" and "Form2", both are forms. In Form1 there are the Main Class and the Main method.

In Form1 I create an object like:

public myobject ob1 = new myobject();

But then, in Form2, I have this code:

 private void bdCancelar_Click(object sender, EventArgs e)
    {
        ob1.status = 1; // I can't access ob1 !!!
    }

Any help ?

Thanks.


Solution

  • You need an instance of Form1. Normally if you have displayed this form you have instantiated it (Form1 form1 = new Form1()). Then you could operate on this instance and access public members:

    form1.ob1.status = 1;
    

    Another possibility is to have your Form2 constructor take a Form1 instance:

    public class Form2: Form
    {
        private readonly Form1 _form1;
        public Form2(Form1 form1)
        {
            _form1 = form1;
        }
    
        private void bdCancelar_Click(object sender, EventArgs e)
        {
            _form1.ob1.status = 1;
        }
    }
    

    and then when you are somewhere inside Form1 and want to create and show Form2:

    var form2 = new Form2(this);
    form2.ShowDialog();