C# 如何判断窗体是否打开

weiling6586 2009-05-26 02:13:29
C# 如何判断窗体是否打开!避免重复打开同一个窗体
...全文
10333 54 打赏 收藏 转发到动态 举报
写回复
用AI写文章
54 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenlh99 2012-08-31
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 的回复:]
五楼给的答案根本就不行,好吧
[/Quote]

这个是可以的……
把FORM F2放在方法外&&
xiaoyu1045 2012-07-15
  • 打赏
  • 举报
回复
[Quote=引用 47 楼 的回复:]

C# code
public void showForm()
{
bool bl=false;
foreach (Form f1 in Application.OpenForms)
{
if ("Form1" == f1.Name)
{
……
[/Quote]
这个可以
xabeijixiong2012 2012-07-15
  • 打赏
  • 举报
回复
经本人亲自测试 47楼的代码为真正的编译通过而且可用!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
o0liuming0o 2012-07-10
  • 打赏
  • 举报
回复
如果窗体被隐藏了,激活(f1.Activate();)就没用了,怎么解决
ZhuMengFang 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 47 楼 的回复:]

C# code
public void showForm()
{
bool bl=false;
foreach (Form f1 in Application.OpenForms)
{
if ("Form1" == f1.Name)
{
……
[/Quote]这个是对的。测试过。。。顶下!
skyfuk 2012-04-16
  • 打赏
  • 举报
回复
 public void showForm()
{
bool bl=false;
foreach (Form f1 in Application.OpenForms)
{
if ("Form1" == f1.Name)
{
f1.Activate();
bl = true;
}
}
if (!bl)
{
Form1 ff = new Form1();
ff.Show();
}
}
skyfuk 2012-04-16
  • 打赏
  • 举报
回复
public void showForm()
{
foreach (Form f1 in Application.OpenForms)
{
if ("Form1" == f1.Name)
{
f1.Activate();
}
else
{
Form1 ff = new Form1();
ff.Show();
}
}
}
zhiping003 2012-02-16
  • 打赏
  • 举报
回复
10楼很厉害,实现方式很独特。
wonderfuldream1 2011-11-04
  • 打赏
  • 举报
回复
五楼给的答案根本就不行,好吧
swjtuzbg 2011-11-01
  • 打赏
  • 举报
回复
Form_Office_Send_Message F_O_S_M = new Form_Office_Send_Message();
foreach (Form myform in Application.OpenForms)
{
if (myform.Name == "Form_Office_Send_Message")
{
F_O_S_M.Activate();
return;
}
}
F_O_S_M.MdiParent = this;//设置窗体的父子关系
F_O_S_M.Parent = panel1;//设置子窗体的容器为父窗体中的Panel
F_O_S_M.Show();//显示子窗体,此句很重要,否则子窗体不会显示
陆地潜水者 2011-10-18
  • 打赏
  • 举报
回复
Program.cs中加 public static Form1 qq;
Form1_Load函数中加Program.qq = new Form1();
打开Form1的按钮事件中加判断
if (Program.qq ==null || Program.qq.IsDisposed)
{
Program.qq = new Form1();
Program.qq.Show();//如果之前未打开,则打开。
}
else
{
Program.qq.Activate();//之前已打开,则给予焦点,置顶。
}
this.Hide();
btloveet 2011-09-01
  • 打赏
  • 举报
回复
你们太黑暗了!都不说答案!
於黾 2011-07-28
  • 打赏
  • 举报
回复
26L可行.而且也不需要必须是MDI窗体.

但是只能控制单个窗体打开其他窗体只打开一个,如果多个窗体都访问同一个窗体,则无法保证只打开一个.

也许改成全局变量就可以了.
zhao1986yan5 2011-07-22
  • 打赏
  • 举报
回复
6 floor very useful
pjwanglin 2011-07-13
  • 打赏
  • 举报
回复
五楼:系统报错,为给Frm1赋值
  • 打赏
  • 举报
回复
//参数form:将打开的窗体。parentForm:MDI主窗体。strTitleName:将打开的窗体标题
private void initForm(Form form,Form parentForm,string strTitleName)
{

foreach (Form childForm in parentForm.MdiChildren)//查看将打开的是否已经打开了
{
if (childForm.Text.Trim() == strTitleName.Trim())
{
if (childForm.WindowState == FormWindowState.Minimized)
childForm.WindowState = FormWindowState.Normal;
childForm.Activate();
return;
}
}

form.MdiParent = parentForm;
form.Text = strTitleName;
form.Show();
}
  • 打赏
  • 举报
回复
private bool checkChildFrmExist(string childFrmName)//参数窗体名称
{
foreach (Form childFrm in this.MdiChildren)
{
if (childFrm.Name == childFrmName)
{
if (childFrm.WindowState == FormWindowState.Minimized)
childFrm.WindowState = FormWindowState.Normal;
childFrm.Activate();
return true;
}
}
return false;
}

这个试过了childFrm.Name的值是空的
  • 打赏
  • 举报
回复
我也正遇到这个问题。
loyayol 2011-04-17
  • 打赏
  • 举报
回复
private void CreateMdiFrom<T>() where T:Form,new()
{
foreach (var from in this.MdiChildren)
{
if (from is T)
{
from.Activate();
return;
}
}
T frm;
frm = new T { MdiParent = this };
frm.Show();
}
ljhong88 2011-04-11
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 hooyke 的回复:]
C# code
Form2 F2 ;
if(F2 == null || F2.IsDisposed)
{
F2 = new Form2();
F2.Show();//如果之前未打开,则打开。
}
else
{
F2.Activate();//之前已打开,则给予焦点,置顶。
}

这个太扯,根本就编译通过不了,你们到底测试过么?
[/Quote]
是的,有个毛用,没测试瞎起哄!
加载更多回复(32)

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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