繁体   English   中英

C#-如何从其他窗体关闭创建的窗体窗口

[英]C# - How to close created form window from other form

我正在用Form1创建一个新表单的函数。

private void makeForm(String option) {

        Form formWin = new Form();
        formWin.TopMost = true;
        formWin.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        formWin.Size = new Size(500,600);
        formWin.StartPosition = FormStartPosition.Manual;
        formWin.Location = new Point(1366 - formWin.Size.Width , 768 - formWin.Size.Width);
        formWin.BackColor = Color.White;
        formWin.TransparencyKey = Color.White;

        var formWinModel = new PictureBox
        {
            Name = "formWin",
            Size = new Size(formWin.Size.Width, formWin.Size.Height),
            SizeMode = PictureBoxSizeMode.Zoom,
            Image = Trans.Properties.Resources.Form_Special,
            Location = new Point(0, 0),
        };

        formWin.Controls.Add(formWinModel);

        if (option == "show")
        {
            formWin.Show();
        }

        if (option == "exit") {
            formWin.Visible = false;
            formWin.Close();
            formWin.Dispose();
        }
    }

当我使用makeForm(“ show”)时,它将创建formWin表单。 但是如何关闭formWin窗体。 我使用了makeForm(“ exit”),但是它不起作用。

谢谢

您已经创建了一个Modal窗口,这意味着在激活formWin将无法访问以前的窗体(您formWin打开formWin )。 如果希望同时访问两个表单,则应改用formWin.Show()

您的方法仍然无法正常工作,因为您正在寻找无法关闭的局部变量(窗体),您应该在方法之外声明Form formWin并将值保存到该变量中。 当您以后要关闭它时。 但这会引起其他一些问题,例如如果您想同时创建多个表单该怎么办? 谁在质疑您的整个逻辑,为什么还要从以前的表格中关闭表格呢?

private Form formWin = null;
private void makeForm(String option)
{
    if(formWin == null)
    {
        formWin = new Form();
        formWin.TopMost = true;
        formWin.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        formWin.Size = new Size(500, 600);
        formWin.StartPosition = FormStartPosition.Manual;
        formWin.Location = new Point(1366 - formWin.Size.Width, 768 - formWin.Size.Width);
        formWin.BackColor = Color.White;
        formWin.TransparencyKey = Color.White;

        var formWinModel = new PictureBox
        {
            Name = "formWin",
            Size = new Size(formWin.Size.Width, formWin.Size.Height),
            SizeMode = PictureBoxSizeMode.Zoom,
            Image = Trans.Properties.Resources.Form_Special,
            Location = new Point(0, 0),
        };

        formWin.Controls.Add(formWinModel);
    }            

    if (option == "show")
    {
        formWin.Show();
    }

    if (option == "exit")
    {
        formWin.Visible = false;
        formWin.Close();
        formWin.Dispose();
        formWin = null;
    }
}

您应该在makeForm函数中创建formWin varibale。 希望对您有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM