Code Bye

怎么样在关闭弹出窗体时更新第一窗体的数据?急

第一个窗体(frm_DataCorrection)
第二个窗体(frm_UpdateInformation_RK)
本人是设计思路是这样的,选中datagridview中要修改的行,点击按钮“修改”,弹出第二个窗体,修改后点击修改,关闭第二个窗体,在窗体关闭时刷新第一个窗体datagridview中的数据,这样刚才修改的那条数据就不再出现在错误列表中了。
本人在第一窗体中写了刷新datagridview中的数据的方法,代码如下:
public void RrfreshDataGridView()
{
switch (comboBox1.Text)
{
case “健康档案号为空”:
dataGridView1.DataSource = sqlhp.selectsqlretrunDataset(sqlhp.strSQL_HealthNumber_IsNULL).Tables[0];
ShowCount_and_set_lable3_4_textBox1_2_VisbleFalse();
break;
case “身份证号为空”:
dataGridView1.DataSource = sqlhp.selectsqlretrunDataset(sqlhp.strSQL_CardNumber_IsNull).Tables[0];
ShowCount_and_set_lable3_4_textBox1_2_VisbleFalse();
break;
//此处省略若干个case……break;
case “健康档案号含有特殊字符或空格”:
dataGridView1.DataSource = sqlhp.selectsqlretrunDataset(sqlhp.strSQL_HealthNumber_HasSpecialCharacter).Tables[0];
ShowCount_and_set_lable2_3VisbleTrue_lable4andtextBox2_VisbleFalse();
break;
case “户籍地信息不完整”:
dataGridView1.DataSource = sqlhp.selectsqlretrunDataset(sqlhp.strSQL_Domicile_notInComplete).Tables[0];
ShowCount_and_set_lable3_4_textBox1_2_VisbleTrue();
label3.Text = “户籍地信息:”; label4.Text = “修改后的户籍地:”;
break;
case “现居住地信息不完整”:
dataGridView1.DataSource = sqlhp.selectsqlretrunDataset(sqlhp.strSQL_CurrentResidence_notInComplete).Tables[0];
ShowCount_and_set_lable3_4_textBox1_2_VisbleTrue();
label3.Text = “现居住地:”; label4.Text = “修改后的现居住地:”;
break;
}
}
//设置选择框内容改变后事件,不同的选择项执行不同的查询
private void comboBox1_TextChanged(object sender, EventArgs e)
{
RrfreshDataGridView();
}
第二个窗体中的修改代码也完成,测试通过。现在怎么样让窗体关闭时自动刷新数据。
解决方案

10

把显示详细信息的窗口关闭时让其DialogResult为OK.然后在主窗口中进行捕捉.但首先你要以模态打开这个显示详细信息的窗口,这样主窗口就可以捕捉到了!

5

可以定义个全局变量,
或用委托.

20

例如说我们使用 #2 的代码设计思路,那么你的弹出窗口就应该设计一个自定义的“数据修改”事件,然后这个事件的一个自定义的EventArgs参数用于返回被修改的对象数据。例如
        private void btnAll_Click(object sender, EventArgs e)
        {
            frmSelectDate lfrmSelectDate = new frmSelectDate();
            lfrmSelectDate.数据修改 += lfrmSelectDate_数据修改;
            lfrmSelectDate.Show();  或 .ShowDialog();
        }
private void lfrmSelectDate_数据修改(object sender, lfrmSelectDateArgs e)
{
    var code = e.序号;
    ........
}

当捕获了数据修改事件,那么随时就可以更改你的 dataGridView1。此时不用管 lfrmSelectDate 有没有关闭(不关闭、连续修改数据也是可以的)。同时你其实也不需要在这个事件处理方法调用 RrfreshDataGridView(),你不需要刷新全部数据,你只要刷新单独一行数据就可以了!

5

你学会为窗体设计自定义事件,会设计事件参数(其中有一个“序号”字段)。这是关键技术!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么样在关闭弹出窗体时更新第一窗体的数据?急