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();
}
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();
}
}