这就是我想要做的。面板内部有一个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.
答案 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();