点击菜单弹出窗口,再点击还弹出窗口

gis_99 2015-07-08 02:46:01
WinForm做的窗口,今天发现一个问题。
点击菜单的某项弹出窗口,窗口不关闭,再次点击菜单的这项,还弹出窗口
请问如何判断窗口已打开,点击就不打开窗口了。
...全文
185 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gis_99 2015-07-08
  • 打赏
  • 举报
回复
这个问题,基本解决了. 方法:
Form1 form=new Form1();
foreach(form frm in Application.openforms)
{
if(frm.name==form.name)
{
frm.activate();
return;
}

}
form.show();
感谢你们的回复。
exception92 2015-07-08
  • 打赏
  • 举报
回复

Form1 form;
  foreach (Form frm in Application.OpenForms)
            {
                if (frm.Name ==form.Name)
                {
                    frm.Activate();
                }
                else
                {
                    // 实例化,并show
                  form = new Form1();
                  form.Show();
                }
            }
於黾 2015-07-08
  • 打赏
  • 举报
回复
或者简单点 弄个全局的List<Form> 打开一个就加进list里 然后再点击的时候判断里面是否已经有这个窗体,如果有,是否已经被释放,释放就移除掉
exception92 2015-07-08
  • 打赏
  • 举报
回复
引用 3 楼 u012488787 的回复:
[quote=引用 1 楼 liaoxing168 的回复:] 定义该窗口为全局变量,执行new操作前先判断该变量是否为空 类似如下代码

private Form form;
public void btn_click()
{
        //判断该窗口是否已经打开
        if(form == null)
        {
                //实例化新窗口,并显示
        }
}
另外,关闭该窗口时记得将该变量设置为null
软件的菜单有很多需要弹出窗口 如果这样,需要很多全局变量,不合适。[/quote] 写成公用方法。这个的确需要每个窗口对象,没有合适不合适。
於黾 2015-07-08
  • 打赏
  • 举报
回复
你可以遍历窗体,判断是否已经存在
gis_99 2015-07-08
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
你让弹出的窗口 ShowDialog() 就可以了。
有的我使用的form.showdialog() 还有很多不能用这个 要用form.show() 还是不行
gis_99 2015-07-08
  • 打赏
  • 举报
回复
引用 1 楼 liaoxing168 的回复:
定义该窗口为全局变量,执行new操作前先判断该变量是否为空 类似如下代码

private Form form;
public void btn_click()
{
        //判断该窗口是否已经打开
        if(form == null)
        {
                //实例化新窗口,并显示
        }
}
另外,关闭该窗口时记得将该变量设置为null
软件的菜单有很多需要弹出窗口 如果这样,需要很多全局变量,不合适。
exception92 2015-07-08
  • 打赏
  • 举报
回复
你让弹出的窗口 ShowDialog() 就可以了。
  • 打赏
  • 举报
回复
定义该窗口为全局变量,执行new操作前先判断该变量是否为空 类似如下代码

private Form form;
public void btn_click()
{
        //判断该窗口是否已经打开
        if(form == null)
        {
                //实例化新窗口,并显示
        }
}
另外,关闭该窗口时记得将该变量设置为null

110,555

社区成员

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

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

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