在C#中控制另一个已打开的表单

时间:2011-07-29 07:58:45

标签: c# compact-framework windows-ce

我正在将Compact Framework 2.0用于Windows CE 5.0中的应用程序。

我在更改不同表单之间的控制时遇到了麻烦。

我创建了一个简单的例子来展示这个。

想象一下,你有两种形式,第一种形式有一个按钮,以便加载第二种形式。

当您单击按钮并加载第二个表单时,您可能想要一个控件以返回到第一个表单,或者您可能只是想在第二个表单加载后关闭第一个表单。

以下是关于加载第二个表单后关闭第一个表单的示例:

public partial class Form1 : Form
{
    private void button1_Click(object sender, EventArgs e)
    {
        this.Close();
        Form2 secondForm = new Form2();
        secondForm.Show();            
    }
}

但不幸的是,这会关闭两种形式,而不仅仅是当前形式(form1)。

所以我认为这必须在第二个表单代码中进行,但我不知道如何从中访问第一个表单。

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

两个表单都关闭的原因是因为Form2的父表单是Form1。 WinForms的工作方式是,如果父级关闭(this.Close()),则任何子级都将自动关闭。

执行此操作的典型方法实际上是使用secondForm.ShowDialog()。这将使第一种形式保留在后台,但使其无法选择。如果你想摆脱当前形式隐藏它:

this.Hide();
Form2 secondForm = new Form2();
secondForm.Show();

您可能需要一个方法,连接到secondForm.Closed事件以调用this.Show()以确保您的表单重新出现。

答案 1 :(得分:0)

Form1是您在Program.cs中创建并启动的MainForm。 如果此表格已关闭。整个申请结束。 尝试隐藏Form1,如之前显示的lan或使用Controller-Class来协调两个Form。