如何从多个表单中打开一个主表单(反之亦然)并保留同一个实例

本文关键字:表单 反之亦然 保留 实例 同一个 一个 | 更新日期: 2023-09-27 18:27:59

我有一个主表单,上面有多个按钮,允许用户打开其他表单。每个表单上都有一个按钮,允许用户返回到主表单。我如何做到这一点,使它们都是同一实例的一部分?由于我的主Program.cs文件是一个静态文件,我想如果我在Program.cs中实例化主表单,如下所示:

static class Program
{
    P90xScheduleForm ScheduleObjectForm = new P90xScheduleForm();  

我可以从其他表格中访问主表格,如

 private void btnGoToSchedule_Click(object sender, EventArgs e)
 {
     ScheduleObjectForm.Show();
     this.Hide();
 } 

但我得到一个"名称"ScheduleObjectForm"在当前上下文中不存在"错误。我还尝试在Program.cs文件的实例化语句前面添加"public static",但这没有帮助。

我不知道该怎么办。试图在每个子窗体中实例化主窗体会创建新的实例。

也许我只是太超前了。这超出了我们在课堂上的水平,但我希望如果我有冒险精神,开始制作自己的程序(当然除了家庭作业),这将帮助我更好地理解事情。

如何从多个表单中打开一个主表单(反之亦然)并保留同一个实例

你不是这样做的。我认为这是winforms。您必须实例化其中一个表单(主表单)firs。

然后,当你点击它的一些按钮时,你可以显示其他类似的表单。

private void button1_Click(object sender, EventArgs e)
    {
        new Form2().ShowDialog();
    }

当你展示了第二个表单时,你可以通过关闭它"返回"到主表单。

关闭主窗体后,您的应用程序将退出。

我认为您可能需要公开静态类程序:

public static class Program 
{
     ....

通常,Program.cs文件已经包含以下行,该行实例化了在项目创建时创建的主窗体,如果它存在于程序中,则使用主窗体的名称更改Form1:

    Application.Run(new Form1());

打开其他表单时,使用其所有者属性将其父表单设置为主表单:

    frmOther.Owner = this;
    frmOther.Show();
    this.Hide();

显示其他表单中的主表单:

    this.Owner.Show();
    this.Hide();