无法从其他表单更新datagridview

时间:2016-09-23 07:18:04

标签: c# winforms

这就是我想要做的。面板内部有一个datagridview,此面板位于tabcontrol中的tabPage内,此tabcontrol位于Form1中。

   Form1 --> TabControl  --> tabPage  --> panel  --> **DATAGRIDVIEW**

从我的主窗体,我调用Form2,如Form2.Show(),其中用户将输入内容然后如果用户单击按钮让我们说“保存更改”,表单2将关闭并在Form1中,我希望更新数据网格。当用户单击Form2 Save Changes中的按钮时。这是代码:

在Form1中:

private void btnEditItem_Click(object sender, EventArgs e)
{
    Form3 form3 = new Form3();
    Form1 frm = this.MdiParent as Form1;
    form3.Show();

    this.Hide();  
}

在第二个表格中:

private void flatButton1_Click(object sender, EventArgs e)
{
    DialogResult dr = MessageBox.Show("Save Changes?", "Confirmation", MessageBoxButtons.YesNo);
    if (dr == DialogResult.Yes)
    {

        Form form1 = (Form)this.MdiParent;
        DataGridView dt = (DataGridView)form1.Controls["flatTabControl1"].Controls["tabPage5"].Controls["panelUpdateRequest"].Controls["dataGridRequestItemsUpdate"];
        dt.Rows[0].Cells[0].Value = "Plsss";**

        this.Hide();
        form1.Show();

    }
}

错误:

  

Datagridview dt = (DataGridView)..Null Reference Exception.

2 个答案:

答案 0 :(得分:0)

Form form1 = (Form)this.MdiParent;

这是您的表格3而不是表格1.您需要参考表格1。

在表格2中你需要这样的东西:

public From3(Form1 form)
{
 // save the reference of the form 1 in form 3 to use it
}

然后你可以用form1从form1中调用它:

form3.show(this);

希望它可以帮到你

答案 1 :(得分:0)

以第一种形式定义一个函数:

public DataGridView GetDataGridView()
{
    return this.dataGridRequestItemsUpdate;
}

以第二种形式检索它:

Form form1 = (Form)this.MdiParent;
var dataGridView = form1.GetDataGridView();