从另一个表单c#winform刷新Form1 dataGrid

时间:2016-09-08 18:44:36

标签: c# mysql winforms datagrid

我做了2个表格。 1“主窗体”和另一个像“模态窗口”的数据插入。

在Form1上,我有这段代码:

public void CargarDataGrid_Estudiantes()
    {
        MySqlConnection con = new MySqlConnection(conString);
        con.Open();
        MySqlCommand cmd = new MySqlCommand("showStudent", con);
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.AddWithValue("@pid_School", Login.ID_SCHOOL_LOGIN);

        MySqlDataAdapter DataAdapter = new MySqlDataAdapter();
        DataTable DataTable = new DataTable();

        DataAdapter.SelectCommand = cmd;
        DataAdapter.Fill(DataTable);

        dataGrid_Estudiantes.DataSource = DataTable;
        dataGrid_Estudiantes.Columns[0].HeaderCell.Value = "id_Student";
        dataGrid_Estudiantes.Columns[0].Visible = false;
        Bla bla bla bla bla........................
    }

我尝试在form2“关闭按钮”的userControl上使用此代码刷新我的网格:

private void btn_cerrarModal_Click(object sender, EventArgs e)
    {
        Pantallas.Estudiantes estu = new Estudiantes();
        estu.CargarDataGrid_Estudiantes();

        ((Modal)this.TopLevelControl).Close();
    }

但是dosnt工作。我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

您无法创建Pantallas.Estudiantes的新实例(在form2中)并期望访问另一个实例(form1 / Pantallas.Estudiantes的“原始”实例)。

使用表单2的DialogResult值来确定是否需要刷新Form1

Form2调用Form1

 private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            if (f2.ShowDialog() == DialogResult.OK)

            {
                // refresh form
                CargarDataGrid_Estudiantes();
            } 
        }

用户按下form2上的关闭按钮:

  private void button1_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.OK;
            this.Close();
        }

Form2上的另一个按钮中,你可以执行那段代码,如果有一个你不想刷新Form1的情况:

 private void button2_Click(object sender, EventArgs e)
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
            }