程序中有好几个窗体,为了省事,我是按下面这种方法实例化的,如下
 public class Form1 : Form  //主界面
    {
        public static Form1 fm1 = null;
        public static Form2 fm2 = new Form2();
        public static Form3 fm3 = new Form3();
        public static Form4 fm4 = new Form4();
        public static Form5 fm5= new Form5();
        public Form1()
        {
            fm1 = this;
            InitializeComponent();
        }
我现在程序运行的很慢,我就想是不是把窗体对象静态化后,占用的内存太大了,还有就是该怎么做呢?希望大家给解答一下,谢谢!对象内存界面c#

解决方案 »

  1.   

    用不着,Application.OpenForms就可以找到所有打开的窗体。
      

  2.   

    只要用new 关键字就会分配新内存在其他form中使用这种方式;
       public static Form1 fm1 = null;
    public Form1()
            {
                _this = this;
                InitializeComponent();
            }每个Form都包含一个自身类型的引用
    调用的时候 直接formx._this.Publicfields
      

  3.   


    有个错误:
     public static Form1 fm1 = null; 应为:
    public static Form1 _this = null;
      

  4.   

    c#打包winfrom程序,怎么才能再次安装时提示已安装  ,大家帮个忙解决下 
      

  5.   


    是的,实例化一次就够了,除非你关闭了窗口: form1._this.Close() 这样的话 窗口资源就会Dispose 掉,下次需要重新实例化。
      

  6.   

    程序里面很少有调用close()方法的窗口,都是直接hide()的,还有程序慢还可能有其他原因吗,我的是基于wince平台的程序!