Form1
namespace SunnyCMS.Archives.UI
{
public partial class Form1 : Form
{
private Form2 f;
public Form1()
{
InitializeComponent();
f = new Form2();
}
private void button1_Click(object sender, EventArgs e)
{
f.Show();
}
}
}
{
public partial class Form1 : Form
{
private Form2 f;
public Form1()
{
InitializeComponent();
f = new Form2();
}
private void button1_Click(object sender, EventArgs e)
{
f.Show();
}
}
}
Form2
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
}
Form2.Designer{
public Form2()
{
InitializeComponent();
}
}
namespace SunnyCMS.Archives.UI
{
partial class Form2
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
Windows 窗体设计器生成的代码
}
}
{
partial class Form2
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
Windows 窗体设计器生成的代码
}
}
第一次打开Form2正确,第二次就会错误提示,Form2已处置。
当然button1_Click代码修改为:
private void button1_Click(object sender, EventArgs e)
{
if (f.IsDisposed)
{
f = new Form2();
f.Show();
}
}
问题也就可以解决,我的问题是不访问IsDisposed属性,也不能修改Form2的Dispose方法,Form必须在Form1构造函数中初始化,我们可以通过何种方法判段Form2已被处置。也就是说必须寻找其他的解决方法。{
if (f.IsDisposed)
{
f = new Form2();
f.Show();
}
}
希望各位朋友提供各自的方案。