![](/img/trans.png)
[英]How to close Console window from windows form applications in 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.