随笔 - 224  文章 - 41  trackbacks - 0
<2010年5月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

享受编程

常用链接

留言簿(11)

随笔分类(159)

随笔档案(224)

文章分类(2)

文章档案(4)

经典c++博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜

原文地址:http://www.84ren.com/read.php?tid-31409.html
大家好 我是GIS理想 当我们做C#开发的时候 也就是说只要是应用程序开发的时候 有一个问题是要经常遇到的 就是当我们点击打开新窗口的问题 如何判断窗口已经打开了 因为如果不做判断的话 明显会出现问题 :每点击一次 就会加载一个相同的窗口 这个是不对的

一般我们打开一个新窗口是这样的:

Private void button_Click(object sender,EventArgs e)

{

Frm frm=new Frm();

Frm.show();

}
这个是经常要用到的 呵呵 尤其是我这样的新手 。。。。。。

很明显 这样每点击一次 都会出来一个新的Frm窗体的 那么怎么判断当前的窗体已经加载呢

方法一 用window api(没用这里过 不敢妄言)

方法二 先实例化一个窗体,然后在点击事件里让它显示 如下:

Frm frm= new Frm();
        private void pictureBox2_Click(object sender, EventArgs e)
        {
         
            if (!frm.Created)
            {
                f = new Frm();
                f.Show();
            }
          }

很明显 这个貌似能实现只出来一次 但是随之而来的问题是 事先就实例化了这个窗体 这在代码编写里是不好的习惯

要是有很多的窗体的话 加载程序的时候就很占系统资源了 所以这样的写法也不可取

方法三 声明一个窗体变量 然后动态的创建并显示

其实这个方法来自于第二个方法的思路 认真分析一下第二个方法可以看到 之所以不可取是因为在声明的时候直接实例化了 那么我们不实例化它 只声明一个窗体变量 不就行了么?

是的 例子代码如下:

//这句放在窗体的初始化的地方 不是点击事件里最佳addPlaceMark是窗体的name

private addPlaceMark addplacemark;

//下面的放在弹出窗体的点击事件里即可

if (addplacemark == null || addplacemark.IsDisposed)

            {

                addplacemark = new addPlaceMark();

                addplacemark.Show();

            }


            else

            {

                addplacemark.WindowState = FormWindowState.Normal;

                addplacemark.Activate();

                addplacemark.Show();

            }

这样就可以了 效果很好 呵呵

好了 总结完毕 搁笔收工



ps:
应用程序启动与关闭事件 Form 和 Control 类和应用程序启动与关闭有关的时间。
   

   当 Windows Form 应用程序启动时,会以下列顺序引发主要表单的启动事件:
        System.Windows.Forms.Control.HandleCreated
        System.Windows.Forms.Control.BindingContextChanged
        System.Windows.Forms.Form.Load
        System.Windows.Forms.Control.VisibleChanged
        System.Windows.Forms.Form.Activated
        System.Windows.Forms.Form.Shown

     当应用程序关闭时,会以下列顺序引发主要表单的关闭事件:         
       System.Windows.Forms.Form.Closing
        System.Windows.Forms.Form.FormClosing
        System.Windows.Forms.Form.Closed
        System.Windows.Forms.Form.FormClosed
        System.Windows.Forms.Form.Deactivate

posted on 2010-08-29 22:46 漂漂 阅读(3364) 评论(0)  编辑 收藏 引用 所属分类: c#开发

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理