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

本文关键字:表单 控制 另一个 | 更新日期: 2023-09-27 18:04:08

我在Windows CE 5.0中使用Compact Framework 2.0。

在不同的表单之间切换控制有困难。

为了说明这一点,我创建了一个简单的例子。

假设你有两个表单,第一个表单有一个按钮用来加载第二个表单。

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

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

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

但不幸的是,这关闭了两个表单,而不仅仅是当前的表单(form1)。

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

有什么建议吗?

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

两个表单关闭的原因是Form2的父窗体是Form1。WinForms的工作方式是,如果父进程被关闭(this.Close()),那么任何子进程将被自动关闭。

要做到这一点,典型的方法实际上是使用secondForm.ShowDialog()。这将使第一个表单保留在后台,但使其不可选择。如果你想摆脱当前的窗体隐藏它:
this.Hide();
Form2 secondForm = new Form2();
secondForm.Show();

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

Form1是在Program.cs中创建并启动的MainForm。若此表格已关闭。整个应用程序结束。试着像我之前展示的那样隐藏Form1,或者使用控制器类来协调这两个Form。