private void Button1(object sender,EventArgs e)
{
f2=new Form2();
f2.Show();
}private void Button2(object sender,EventArgs e)
{
f2.Close();
}private void Button3(object sender,EventArgs e)
{
if(f2!=null && f2.Created)
f2.Close();
}当我点击button1多次,显示了多个Form2,但是当我点击button2或者button3时都只能关掉最后显示的那个Form2。
请问怎么对之前显示的Form2操作?
之前显示的Form2的名字已经不是f2了,是什么呢?
{
f2=new Form2();
f2.Show();
}private void Button2(object sender,EventArgs e)
{
f2.Close();
}private void Button3(object sender,EventArgs e)
{
if(f2!=null && f2.Created)
f2.Close();
}当我点击button1多次,显示了多个Form2,但是当我点击button2或者button3时都只能关掉最后显示的那个Form2。
请问怎么对之前显示的Form2操作?
之前显示的Form2的名字已经不是f2了,是什么呢?
{ Form2 f2=new Form2();
f2.Show();
F2List.Add(f2);
} private void Button2(object sender,EventArgs e)
{
F2List[F2List.Count-1].Close();
F2List.RemoveAt(F2List.Count-1);
}
{
f2=new Form2();
f2.Show();
}
--------------------------
if(f2==null)
{
f2=new Form2();
}
f2.Show();
List<Form> listForms = new List<Form>(); private void button1_Click(object sender, EventArgs e)
{
fa = new Form2();
fa.Show();
listForms.Add(fa);
} private void button2_Click(object sender, EventArgs e)
{
if (listForms.Count > 0)
{
Form test = listForms[listForms.Count - 1];
test.Close();
listForms.RemoveAt(listForms.Count - 1);
}
else
{
MessageBox.Show("无窗体打开!");
}
}
只是 zgke 说的实现了一下,经过测试,正确.可控制索引值控制窗体; dancingbit 说的我试了一下不行.....
如果打开实例,就把打开的传给它,要不然就new一个
这么快
/// <summary>
/// 名称:CheckChildOpenState
/// 功能:用子窗体的Name进行判断是否已实例化,如果存在则将他激活
/// </summary>
/// <param name="MdiForm">容器窗体</param>
/// <param name="ChildForm">子窗体</param>
public static void CheckChildOpenState(Form MdiForm, Form ChildForm)
{
foreach (Form tempChildForm in MdiForm.MdiChildren)
{
if (tempChildForm.Name == ChildForm.Name.ToString())
{
if (tempChildForm.WindowState == FormWindowState.Minimized)
{
tempChildForm.WindowState = FormWindowState.Normal;
}
tempChildForm.Activate();
return;
}
}
ChildForm.MdiParent = MdiForm;
ChildForm.Show();
}
#endregion
{
if (f2==null) f2=new Form2();
f2.Show();
}