打开同一个form多次的问题

zzwwb1 2009-08-03 05:58:17
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了,是什么呢?
...全文
137 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
terrible12 2009-08-03
  • 打赏
  • 举报
回复
Form f2=null;

private void Button1(object sender,EventArgs e)
{
if (f2==null) f2=new Form2();
f2.Show();
}
风之影子 2009-08-03
  • 打赏
  • 举报
回复
#region MDI子窗体实例化一次
/// <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
风之影子 2009-08-03
  • 打赏
  • 举报
回复
楼主是不是只想让一个窗体实例化一次
LQknife 2009-08-03
  • 打赏
  • 举报
回复
1 2 楼难道是传说中的csdn抢分团
这么快
Skyhoo 2009-08-03
  • 打赏
  • 举报
回复
上面的方法都是可以的,都是用到了泛型,楼主也可以使用Form的数组来保存FORM2 只是不够泛型直接好用
fengqieer1986 2009-08-03
  • 打赏
  • 举报
回复
应该打开一个实例吧,打开那么多干嘛
如果打开实例,就把打开的传给它,要不然就new一个
dancingbit 2009-08-03
  • 打赏
  • 举报
回复
如果你确实需要打开多个f2窗体,自然是不行的。
我那个是控制不让打开多个。
libolei 2009-08-03
  • 打赏
  • 举报
回复
Form2 fa = null;
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 说的我试了一下不行.....
dancingbit 2009-08-03
  • 打赏
  • 举报
回复
private void Button1(object sender,EventArgs e)
{
f2=new Form2();
f2.Show();
}
--------------------------
if(f2==null)
{
f2=new Form2();
}
f2.Show();
zgke 2009-08-03
  • 打赏
  • 举报
回复
使用IList<Form2> F2List =NEW IList<Form2>();

private void Button1(object sender,EventArgs e)
{

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);
}

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧