首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#如何打开同一个已经释放的窗体?

2013-03-13 
C#怎么打开同一个已经释放的窗体??都知道当一个子窗体被关闭(Close)后,在用Show()显示出来则会提示无法访

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;


using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using Syste……


我了个去 我这是随便用wpf  给你写的例子  跟winform  代码是比较类似的 你自己换下呀...
[解决办法]
private Form2 _ShowWindow;

        public Form1()
        {
            InitializeComponent();
            this.FormClosed += new FormClosedEventHandler(Form1_FormClosed);
        }

        void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (_ShowWindow != null)
            {
                _ShowWindow.Dispose();
                _ShowWindow = null;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (_ShowWindow == null)
            {
                _ShowWindow = new Form2();
            }
            _ShowWindow.Show();
        }
winform的
[解决办法]
   public partial class Form1 : Form
    {
        private Form2 _ShowWindow;

        public Form1()
        {
            InitializeComponent();
            this.FormClosed += new FormClosedEventHandler(Form1_FormClosed);
        }

        void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (_ShowWindow != null)
            {
                _ShowWindow.Dispose();
                _ShowWindow = null;
            }
        }


        private void button1_Click(object sender, EventArgs e)
        {
            if (_ShowWindow == null)
            {
                _ShowWindow = new Form2();
            }
            _ShowWindow.Show();
        }
    }


[解决办法]
引用:
引用:你可以试试重新创建实例啊,先判断下窗体是否已经释放
先将窗体定义成类的成员
C# code?123456789101112Fomr1 form1;//申明为类成员//下列代码放在需要打开窗体那if (form1 == null
[解决办法]
form1 .IsDisposed )//先判断窗体实例是否存在{    form1 = new Fo……

private Form2 _ShowWindow;
声明一个页面级别的全局私有变量
如果要维护弹出框窗体的状态 不显示的时候 用hide() 方法  别用close 
[解决办法]
释放了就没办法还原原来的窗体组件了
[解决办法]
引用:
我现在要做的首先是显示一个窗体,当我鼠标放在一个控件上时就Close这个窗体,不能隐藏不然就不能继续操作了,然后当鼠标再放到这个控件上时重新new 出来刚才关闭的窗体


类似  文本框 点下 弹出个日历 用户选择  然后关闭日历  再点文本框的时候再把 文本框里的日期 自动与弹出日历数据联动的功能?

热点排行