c#防止重复表单

本文关键字:表单 | 更新日期: 2023-09-27 18:24:12

我有两种形式。。形式1和形式2。。我在表单1上有加载表单2的按钮1,但每次单击按钮1都会加载表单2 的新实例

如果按钮1是打开的,我想让它进入前窗体2,如果它被最小化,则恢复

c#防止重复表单

这应该可以工作(不过还没有测试)

    public static bool _Invoked;
    Form2 f2 = new Form2();
    private void button1_Click(object sender, EventArgs e)
    {
        if (!_Invoked)
        {
            _Invoked = true;
            f2.Show();
        }
        else if (_Invoked)
        {
            f2.BringToFront();
            _Invoked = false;
        }
    }

添加评论以进一步澄清

编辑:

刚刚测试了这个和它的工作

    Form2 f2 = new Form2();
    bool _Clickone = false;
    private void button1_Click(object sender, EventArgs e)
    {
        if (!_Clickone)
        {
            _Clickone = true;
            f2.Show();
        }
        else
        {
            f2.WindowState = FormWindowState.Normal;
            f2.ShowInTaskbar = true;
            f2.BringToFront();
        }
    }

然后为m 处理第二个表单关闭事件

    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        e.Cancel = true;
        this.WindowState = FormWindowState.Minimized;
        this.ShowInTaskbar = false;
    }

您可以通过在form2中创建onClose事件来实现这一点,在该事件中取消关闭,并将可见性设置为隐藏。

然后,不要创建新实例,而是将可见性再次设置为可见。