从另一个表单刷新dataGridView

问题描述 投票:0回答:3

我有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 事件,但没有成功。

请帮帮我!

c# forms datagridview refresh
3个回答
10
投票

我在@MikeH和@Sybren的帮助下解决了我的问题:

表格1:

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


0
投票

关闭按钮范围之前_点击谁打开了Form2 重新实现该方法 表格1 私人无效button_for_openingForm2_Click(对象发送者,EventArgs e) { //打开Form2 ...................... ...................... 刷新网格(); }

© www.soinside.com 2019 - 2024. All rights reserved.