窗体关闭?

mlwxj 2003-07-11 10:44:59
在Form1的button1_Click中调用Form2,每点一次就会出现一个Form2,点多几次就出一大堆,怎样才能防止这种现象?
也就是说怎样在Form1先把现有的Form2关闭,然后再show().

private void button1_Click(object sender, System.EventArgs e)
{

form2 f1=new form2();
...
...//f1.closed()这样不行.这里该怎样写?

f1.Show();
}
...全文
34 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
mlwxj 2003-07-11
  • 打赏
  • 举报
回复
谢谢各位!大家都有分...
NaZiChong 2003-07-11
  • 打赏
  • 举报
回复
你应该在 Form1 中创建一个引用 Form2 实例的变量:
private Form2 myForm2;

然后,button 的 Click 处理改为:
private void button1_Click(object sender, System.EventArgs e)
{
if (myForm2 == null || myForm2.IsDisposed) myForm2=new Form2();
myForm2.Show();
}
dailiangcm 2003-07-11
  • 打赏
  • 举报
回复
添加字段form2
private Form2 form2 = new Form2();

Onclick
{
//模式调用
form2.ShowDialog(this);

//直接调用
form2.Show();

}
cherno 2003-07-11
  • 打赏
  • 举报
回复
用Singleton设计模式~~~
AhBian 2003-07-11
  • 打赏
  • 举报
回复
你应该在 Form1 中创建一个引用 Form2 实例的变量:
private Form2 myForm2; // 也可用 private Form2 myForm2 = new Form2();

然后,button 的 Click 处理改为:
private void button1_Click(object sender, System.EventArgs e)
{
if (this.myForm2 == null)
this.myForm2 = new Form2();
if (this.myForm2.Visible == false)
this.myForm2.Show(); // 也可 this.myForm2.Visible = true;
this.myForm2.Focus();
}
hhmna1234 2003-07-11
  • 打赏
  • 举报
回复
在打开窗体的load里面,加上第一个窗体.activeform.hide()的属性

private void 発form2_Load(object sender, System.EventArgs e)
{
form1.ActiveForm.Hide(); }

private void button2_Click(object sender, System.EventArgs e)
{
form1 a =new form1();
a.Show ();
}
Zengqf_W 2003-07-11
  • 打赏
  • 举报
回复
调用API函数

FindWindow()

SetActiveWindow()
CaffeMocha 2003-07-11
  • 打赏
  • 举报
回复
不过Form2.showdialog()为模式窗体 必须关闭以后才能执行其他操作
如果在打开Form2的同时还可以执行其他操作 那就按 declude地方法咯
CaffeMocha 2003-07-11
  • 打赏
  • 举报
回复
不知道你说的是不是只能有一个Form2显示
如果是直接用Form2.showdialog()即可保证阿
brightheroes 2003-07-11
  • 打赏
  • 举报
回复
同意declude的做法。
放在外面就可以了
zwztu 2003-07-11
  • 打赏
  • 举报
回复
同意declude()
hbcdplum 2003-07-11
  • 打赏
  • 举报
回复
同意declude() 做法

其实如果使用设计器做的,系统自动会处理的,你只要在按钮的单击事件中form2.show()就可以了,不会出现多个窗口的
qiqibing 2003-07-11
  • 打赏
  • 举报
回复
如果是MDI窗口,可以用这个方法
foreach(Form f in this.MdiChildren)
{
if (f is Form2)
{
f.Focus();
return;
}
else
f.Close();
}
COCK747 2003-07-11
  • 打赏
  • 举报
回复
你的意思是在FORM1上点击按钮后就要打开FORM2吗?
declude 2003-07-11
  • 打赏
  • 举报
回复
你把form2 f1=new form2();写到button1_Click事件外面去不行吗?,每次只要fl.show()。

110,571

社区成员

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

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

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