Form.Show():无法访问已处置的对象

Bjo*_*nen 5 c# winforms

我已经坚持了一段时间了.我无法在按钮点击上打开新表单.如果我.Show()在开始表单构造函数中创建和表单,我将工作.我不明白!:-(

启动表单

public Form1()
    {
        InitializeComponent();
        startmessage();
        br = Logic.loadXML("theshiiiiiittt.xml");
        br2 = br.Clone();
        loadboxes();
        //serializeTest();
        t = new Thread(contactDBUpdate);
        //t.IsBackground = true;
        t.Start();

    }
Run Code Online (Sandbox Code Playgroud)

按钮事件:

private void resultButton_Click(object sender, EventArgs e)
    {
        ResultForm rf = new ResultForm(this);
        rf.Show();
        this.Enabled = false;
    }
Run Code Online (Sandbox Code Playgroud)

希望这就够了.

Tim*_*ter 5

在我的情况下,这是因为我想让我的表格非模态.所以我改变他们form.ShowDialog(parentForm)form.Show().

但这导致ObjectDisposedException我试图第二次显示一个表单因为代码中的某个地方this.Close();.Form.Close也处理它.

MSDN:

关闭表单时,将关闭对象中创建的所有资源并处理表单.

我只需要改变

this.Close();
Run Code Online (Sandbox Code Playgroud)

this.Hide();
Run Code Online (Sandbox Code Playgroud)


Bjo*_*nen 2

发现我的代码有问题。我又看了一眼堆栈跟踪,发现了一条消息“Icon”。

           this.Icon.Dispose();
Run Code Online (Sandbox Code Playgroud)

Startupform 有这一行。

这段代码解决了我的问题:

private void resultButton_Click(object sender, EventArgs e)
{

    ResultForm rf = new ResultForm(this);
    rf.Icon = this.Icon;
    rf.Show();
    this.Enabled = false;
}
Run Code Online (Sandbox Code Playgroud)

感谢各位的伸出援助之手...