我已经坚持了一段时间了.我无法在按钮点击上打开新表单.如果我.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)
希望这就够了.
在我的情况下,这是因为我想让我的表格非模态.所以我改变他们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)
发现我的代码有问题。我又看了一眼堆栈跟踪,发现了一条消息“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)
感谢各位的伸出援助之手...