5

I have Form1 and Form2.

Form1 has a dataGridView and a button for opening Form2. I have written a method in Form1 as below that perfectly refreshes the dataGridView:

public void RefreshGrid()
    {
        dataGridView1.DataSource = empControl.SelectAll(); //Works great
    }

In Form2 I insert into the table and use the below Code for Calling the above method. When I traced the code I saw that it implements all the way but the dataGridView isn't refreshed!

private void btnInsert_Click(object sender, EventArgs e)
    {
            //Insert Code (Inserts perfectly)

            Form1 frm = new Form1();
            frm.RefreshGrid();
            this.Close();
        }
    }

I also tried the FormClosing Event of Form2 but it didn't do the trick.

Help me out plz!

user4266447
  • 151
  • 1
  • 1
  • 7
  • Here's a link which describes how to pass an instance http://stackoverflow.com/questions/4176682/access-of-public-method-between-forms – Sybren Nov 18 '14 at 17:41
  • @Sybren Thank u so much for leaving me that link, It made the job for me. – user4266447 Nov 18 '14 at 17:55

2 Answers2

10

I solved my problem with the help of @MikeH and @Sybren:

Form1:

Form2 frm = new Form2(this);
frm.Show();

Form2:

    private readonly Form1 frm1; //readonly is optional (For safety purposes)

    public Form2(Form1 frm)
    {
        InitializeComponent();

        frm1 = frm;
    }

    private void btnInsert_Click(object sender, EventArgs e)
    {
        frm1.RefreshGrid();
        this.Close();
    }
user4266447
  • 151
  • 1
  • 1
  • 7
6

Your problem is that you're creating a new instance of Form1. Instead of new Form1 you need to pass an instance of the existing Form1 to Form2

MikeH
  • 4,242
  • 1
  • 17
  • 32