C#如何禁止重复显示同一个窗体

点击一个控件 弹出一个窗体
在点击它 又出一个同样的窗体
现在要同一个窗体只能显示一个

主窗体:(假设叫做Form1)
public static Form2 f2;//声明窗体类静态变量
private void Button1_Click(object sender, EventArgs e)
{
if (f2 == null)
{
f2 = new Form2();//将主窗体对象传递过去
f2.Show();//显示窗体二
}
else
{
f2.Activate();
}
}
Form2子窗体:
//子窗体的关闭事件
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Form1.f2 = null;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-12-18
假定:你的窗体名称为:Form1
foreach (Form form in this.MdiChildren)
{
if (form.GetType() == typeof(Form1))
{
form.Focus();
return;
}
}

Form1 f = new Form1();

f.MdiParent = this;
f.Show();

这样就OK了!
第2个回答  2009-12-18
1把那个winform做成模态的 没有点确定or取消不能做别的
2winform Form1_Load()里判断上一个是不是还在 在就message。show(“以存在”);然后返回or退出
第3个回答  2009-12-18
你在点击的时候 判断一下你点击的窗体是否处于显示状态就哦了呗
第4个回答  2009-12-18
frm.showdialog();
//如此来,在这个窗口未关闭之前,休想再次打开其他
//简单明了,接分!

请教C#避免重复打开一个窗体
MainForm frm=new MainForm();private void button1_clicked(object sender arg e){ if(frm.IsDisposed){ frm=new MainForm();} frm.Show();} 这样写就可以了。。。

C#中防止点击同一按钮多次,弹出多个同一窗体办法?
也可以采用单例模式 关于单例模式可以在网上找 单例意思就是说一个类始终只能有一个对象存在 不提供共有的构造方法,而提供一个共有方法来返回一个该类对象 而这个共有的方法返回的始终都是同一个对象,所以就不存在多个窗体出现的现象

C#如何禁止重复显示同一个窗体
private void Button1_Click(object sender, EventArgs e){ if (f2 == null){ f2 = new Form2();\/\/将主窗体对象传递过去 f2.Show();\/\/显示窗体二 } else { f2.Activate();} } Form2子窗体:\/\/子窗体的关闭事件 private void Form2_FormClosing(object sender, FormClosingEventArgs e){...

我用c#建立一个mdi窗体,在其中显示一个子窗体。每次点按钮都显示一个...
1、将button1的Modifiers设置为Public 2、在该按钮的CLICK事件中加一句:button1.Enabled = false;3、子窗口的FormClosing事件这样编写:private void Form1_FormClosing(object sender, FormClosingEventArgs e){ Form2 f = (Form2)this.ParentForm;f.button1.Enabled = true;} ...

C#如何避免相同MDI子窗口重复打开
private void toolStripButton1_Click(object sender, EventArgs e){ foreach (Form childrenForm in this.MdiChildren){ \/\/检测是不是当前子窗体名称 if (childrenForm.Name == "Form2"){ \/\/是的话就是把他显示 childrenForm.Visible = true;\/\/并激活该窗体 childrenForm.Activate();childrenForm...

C#子窗体在主窗体的pannel控件上显示后如何限制它再次显示?求各位大 ...
自动变化的问题,你可以用 foreach(Control control in pannel.Controls){ control.Author = Authors.Left | ... Right | ...Top | ...Bottom;\/\/这行没写全,就是找类似的这个属性,然后设置这个枚举上下左右都锚上点,然后就会实现自动改变自身大小了。前提是你的pannel也是自动随窗体变化而改变...

c#窗口,没关闭前,不允许同时在打开一个
Show改成ShowDialog就行了,form2会以模式窗体弹出,不关闭的情况下是不能去点击那个Form1上的按钮的。

C# 中 我有个winform界面 不想让用户重复打开多个界面,如果界面开启...
你的程序是不是你自己编译生成的exe?如果是,你就可以在代码里用process(手写的,不知道是否正确)这个对象,判断你的程序的进程是不是存在了,如果存在了就提示或者不提示,然后不中断了,这个是思路。下面...代码...我目前没有编译环境,你自己搜索看(关键字:进程是否存在)希望对你有帮助!

...如何让Form1窗体关闭?也就是说始终只有一个窗体在显示!
frm2.Show();Form1.closed();\/\/这个是让Form1关闭.如果Form1是初始显示的窗体,则所有窗体都要关闭(包括Form2窗体.即:Form2打开瞬间又关闭);这时就需要用下面的语句了:Form1.Hide();\/\/该语句是让Form1隐藏起来,还在运行中...当想关闭时别忘了用:Appliction.Close();希望对你有所帮助!!!

C# 关闭一个窗体同时打开另外一个窗体
这个问题可以通过对Main函数处理来达到要求,可以使用Login窗口使用ShowDialog显示。参考如下:static class Program { \/\/\/ \/\/\/ 应用程序的主入口点。 \/\/\/ [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(fal...

相似回答