读书人

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

发布时间: 2013-03-13 10:56:58 作者: rapoo

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 出来刚才关闭的窗体


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

读书人网 >C#

热点推荐