从另一个窗体刷新 dataGridView

5

我有一个Form1和一个Form2。

Form1拥有一个dataGridView和一个用于打开Form2的按钮。 我已经在Form1中编写了以下方法,可以完美地刷新dataGridView:

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

在Form2中,我向表格中插入数据并使用以下代码调用上述方法。当我跟踪代码时,我发现它一直在执行,但dataGridView没有刷新!
private void btnInsert_Click(object sender, EventArgs e)
    {
            //Insert Code (Inserts perfectly)

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

我也尝试了Form2的FormClosing事件,但这并没有起到作用。

请帮我解决问题!


这里有一个链接,描述了如何传递一个实例:http://stackoverflow.com/questions/4176682/access-of-public-method-between-forms - Sybren
@Sybren非常感谢您给我留下那个链接,它为我的工作提供了帮助。 - user4266447
2个回答

10
我在@MikeH和@Sybren的帮助下解决了我的问题:
Form1:
Form2 frm = new Form2(this);
frm.Show();

表单2:

    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();
    }

6

您的问题在于您正在创建一个新的Form1实例。而不是使用new Form1,您需要将现有的Form1实例传递给Form2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接