日期:2014-05-17  浏览次数:20845 次

C#怎么打开同一个已经释放的窗体??
都知道当一个子窗体被关闭(Close)后,在用Show()显示出来则会提示无法访问已释放的对象(子窗体名),现在怎么能做到在父窗体中可以重新打开这个以释放的窗体?
c# 窗体

------解决方案--------------------
把那个窗体变量做成全局的,Close时不要Dispose
------解决方案--------------------

        private ShowWindow _ShowWindow;

        public Window5()
        {
            InitializeComponent();
            this.Loaded += new RoutedEventHandler(Window5_Loaded);
            this.Unloaded += new RoutedEventHandler(Window5_Unloaded);
        }

        void Window5_Unloaded(object sender, RoutedEventArgs e)
        {
            if (_ShowWindow!=null)
            {
                _ShowWindow = null;
            }
        }

        void BtnShowWindow(object sender,RoutedEventArgs e)
        {
            if (_ShowWindow == null)
            {
                _ShowWindow = new ShowWindow();
            }
            _ShowWindow.Show();
        }
        



------解决方案--------------------
你可以试试重新创建实例啊,先判断下窗体是否已经释放
先将窗体定义成类的成员

Fomr1 form1;//申明为类成员
//下列代码放在需要打开窗体那
if (form1 == null
------解决方案--------------------
form1 .IsDisposed )//先判断窗体实例是否存在
{
    form1 = new Form1();
    form1.Show();
 }
 else 
{
     form1.WindowState = FormWindowState.Normal;
     form1.Show();
}

------解决方案--------------------
关闭的时候用Hide()
------解决方案--------------------
是不是Form2里在窗体关闭事件里写什么东西了?
------解决方案--------------------
引用:
引用:关闭的时候用Hide()Hide只是隐藏,而我要的是释放窗体

释放了又要再显示,那就只有new一个了,那样的话,控件状态什么的都丢了
------解决方案--------------------
引用:
刚试了一下,怎么不可编译呢using System;