在C#中控制多种形式

时间:2018-09-07 01:31:45

标签: forms

这是我的第一个问题,所以我希望我做对了。 我目前正在使用Visual Studio Express 2017执行C#Windows Forms App项目。

我已经在Stack Overflow和YouTube上搜索了类似的示例,但找不到任何示例。在所附的图像中,我在项目中有3种形式。作为主要控制窗体的Form1上有2个按钮。 Form2的Form2button和Form3的Form3button。当我单击From2button时,我可以继续单击并打开多个Form2,也可以打开多个Form3,没有限制。我想运行该程序,如果我单击Form2button,它只能加载一个Form2实例,而与Form3button相同。

但是,如果我单击Form3button并打开了Form2,则我希望Form2关闭并且仅打开Form3以及Form3已打开,然后单击Form2button,Form3将关闭,Form2将打开。 Form1一直在屏幕上处于活动状态。

Overview of Form Program

namespace MultiWindows

{     公共局部类Form1:表单     {         公共Form1()         {             InitializeComponent();         }

    private void Form2button_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.Show();
    }

    private void Form3Button_Click(object sender, EventArgs e)
    {
        Form3 f3 = new Form3();
        f3.Show();
    }
}

}

1 个答案:

答案 0 :(得分:0)

到目前为止,在其他人的帮助下,我已经设法使它起作用。我不认为他们的帮助。

因此,当我运行程序并单击Form2button时,它将打开Form2,反之亦然。当我单击Form3button时,它不会关闭Form2,而仅在屏幕上显示Form3,因此两个窗体在屏幕上都处于活动状态。

如果我通过单击右上角来关闭表单,除非重新启动程序,否则无法重新打开已关闭的表单。

命名空间MultiWindows {

public partial class Form1 : Form

{
    public Form1()
    {
        InitializeComponent();
    }
    private Form2 f2 = null;
    private Form3 f3 = null;

    private void Form2button_Click(object sender, EventArgs e)
    {
        if (this.f2 == null)
        {
            f2 = new Form2();
            f2.Show();
        }
        else
        {
            f2.BringToFront();
        }
    }

    private void Form3Button_Click(object sender, EventArgs e)
    {
        if (this.f3 == null)
        {
            f3 = new Form3();
            f3.Show();
        }
        else
        {
            f3.BringToFront();
        }
    }
}

}