我使用名为btnA
和数据网格的按钮来创建窗体A. 当我点击这个按钮时,另一个表格B打开,它有一个按钮btnB。当我点击btnB时,我需要关闭表单B并刷新表单A.我如何实现这一目标?从winforms应用程序的子窗体中关闭主窗口
谢谢。
我使用名为btnA
和数据网格的按钮来创建窗体A. 当我点击这个按钮时,另一个表格B打开,它有一个按钮btnB。当我点击btnB时,我需要关闭表单B并刷新表单A.我如何实现这一目标?从winforms应用程序的子窗体中关闭主窗口
谢谢。
当您创建FormB
,传递一个参考FormA
class FormB : Form
{
FormB(FormA parent)
{
this.Parent = parent;
}
...
protected void btnB_Click(object sender, EventArgs e)
{
parent.RefreshGrid();
this.Close();
}
}
,然后点击butB,你可以关闭formB和访问FORMA刷新它。
然而,对于那些温柔的人来说,这是一个很好的建议,这可能会引发可能导致可怕的Cross Thread异常的管道。 – DoomerDGR8 2011-06-07 15:10:32
这是我用于这种场景的需求的方法。它运作良好。尝试这个。 @ Bala-谢谢巴拉 – 2011-06-07 15:12:22
您可以使用ShowDialog()
在FormA
显示FormB
。这将以模态显示FormB
。然后,当您关闭FormB
时,ShowDialog()
之后的执行将继续在FormA
的声明中。在那里写你的刷新代码。
中使用this.close()将是适当的,但注意form b在这种情况下将是模态 – vityanya 2011-06-07 15:05:38
我知道。请参阅@Bala R关于如何传递引用,但OP听起来像他真的只是开始和IMO模式对话更容易处理。 – 2011-06-08 07:17:08
for closing this.Close();我猜 – Ruben 2011-06-07 14:58:01
@Mythje - 如果他在FormA中启动一个Application.Run(),this.Close()将使他的整个应用程序关闭,在formB – 2011-06-07 15:11:33