2011-06-07 129 views
2

我使用名为btnA和数据网格的按钮来创建窗体A. 当我点击这个按钮时,另一个表格B打开,它有一个按钮btnB。当我点击btnB时,我需要关闭表单B并刷新表单A.我如何实现这一目标?从winforms应用程序的子窗体中关闭主窗口

谢谢。

+0

for closing this.Close();我猜 – Ruben 2011-06-07 14:58:01

+0

@Mythje - 如果他在FormA中启动一个Application.Run(),this.Close()将使他的整个应用程序关闭,在formB – 2011-06-07 15:11:33

回答

4

当您创建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刷新它。

+0

然而,对于那些温柔的人来说,这是一个很好的建议,这可能会引发可能导致可怕的Cross Thread异常的管道。 – DoomerDGR8 2011-06-07 15:10:32

+0

这是我用于这种场景的需求的方法。它运作良好。尝试这个。 @ Bala-谢谢巴拉 – 2011-06-07 15:12:22

2

您可以使用ShowDialog()FormA显示FormB。这将以模态显示FormB。然后,当您关闭FormB时,ShowDialog()之后的执行将继续在FormA的声明中。在那里写你的刷新代码。

+0

中使用this.close()将是适当的,但注意form b在这种情况下将是模态 – vityanya 2011-06-07 15:05:38

+0

我知道。请参阅@Bala R关于如何传递引用,但OP听起来像他真的只是开始和IMO模式对话更容易处理。 – 2011-06-08 07:17:08