我在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表单。但如何关闭形式。我使用了makeForm(“exit”),但它不起作用。
由于
答案 0 :(得分:1)
您已创建模态窗口,这意味着在formWin
处于活动状态时,无法访问上一个表单(您打开的表单formWin
)。如果您希望同时访问这两个表单,则应使用formWin.Show()
代替。
您的方法无论如何都无法工作,因为您正在寻找一个无法关闭的局部变量(窗体),您应该在方法之外声明Form formWin
并将值保存到此变量中。当你以后想要关闭它。但是这会引起一些其他问题,例如如果你想同时创建多个表单怎么办?哪个问题是你的整个逻辑,为什么甚至关闭你之前的表格中的表格?
答案 1 :(得分:-2)
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。我希望它可以帮到你。