【发布时间】:2011-10-23 00:46:24
【问题描述】:
我有一个倒数计时器表单 - 在第一个表单上,用户将输入倒计时时间 - 警告时间、结束消息等。还有两个单选按钮(最大/最小),根据选择的情况,它们将打开一个新的 Max 或 Min 形式,时间将实际开始倒计时。它工作正常并且按我的预期倒计时。但是,如果我退出 Max 或 Min 表单并尝试以新的时间再次运行,则会收到错误消息。代码如下 - 注意 ShowDialog(this);是我尝试过的 - 它让我可以关闭并打开新表格,但它实际上并没有开始倒计时。 UpdateLabels 是更新标签的函数。
bool Max = rbMax.Checked;
if (Max == true)
{
//_Max.ShowDialog(this);
_Max.Show();
}
else
//_Min.ShowDialog(this);
_Min.Show();
UpdateLabels();
}
我还尝试了以下我在网上阅读的可能解决方案,但它也没有奏效......
private void Max_FormClosing(object sender, FormClosingEventArgs e)
{
this.Hide();
this.Parent = null;
}
谁能帮帮我 - 如果需要,我可以发布 UpdateLabels 函数。我对 UI C# 开发很陌生,所以任何帮助都会很棒。谢谢。
【问题讨论】:
-
Form.ShowDialog和Form.Show之间的一个显着区别是前者不会自动Dispose您的表单,而后者会。这样做的原因是,如果您显示一个无模式的表单(即使用Form.Show),程序执行会返回到您的代码在表单关闭之前,并且您无法知道何时关闭表格在您的Form课程之外关闭。因此,由于您没有好地方可以拨打Dispose,Windows Forms 会在适当的时间(当表单关闭时)为您接手。