Ctr*_*eat 7 .net c# forms winforms
我有一个倒数计时器表格 - 在第一个表格上,用户将输入倒计时时间 - 警告时间,结束消息等.还有两个单选按钮(最大/最小),根据选择哪个,他们将打开一个新的最大值或最小形式,时间实际上将开始倒计时.它正常工作并按照我的预期倒计时.但是,如果我退出Max或Min形式并尝试再次运行新的时间,我会收到错误.代码如下 - 注意注释掉.ShowDialog(this); 是我试过的东西 - 它让我关闭并打开新表格确定但它实际上并没有开始倒计时.UpdateLabels是用于更新标签的功能.
bool Max = rbMax.Checked;
if (Max == true)
{
//_Max.ShowDialog(this);
_Max.Show();
}
else
//_Min.ShowDialog(this);
_Min.Show();
UpdateLabels();
}
Run Code Online (Sandbox Code Playgroud)
我也尝试了以下在线阅读作为可能的解决方案,但它也没有工作....
private void Max_FormClosing(object sender, FormClosingEventArgs e)
{
this.Hide();
this.Parent = null;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我 - 如果需要,我可以发布UpdateLabels功能.我对UI C#开发很陌生,所以任何帮助都会很棒.谢谢.
问题是,不能再使用关闭的表单(重新打开)。这就是为什么您发布的代码试图停止关闭并仅隐藏您的窗口。但是要做到这一点,必须将 Cancel-property 设置为 true:
private void Max_FormClosing(object sender, FormClosingEventArgs e) {
this.Hide();
this.Parent = null;
e.Cancel=true;
}
Run Code Online (Sandbox Code Playgroud)
要以这种方式关闭窗体后显示它,请使用 Show() 方法显示它。
但是,这可能只是一种解决方法,您可以使用另一种设计来解决问题。 也许明智的做法是在每次需要时创建表单的新实例,而不是每次都尝试重新打开它。这也有一个优点,即表单仅在确实需要时才需要资源。
您可以做的是在调用 .Show 方法之前添加以下检查:
if(_Max == null || _Max.IsDisposed)
_Max = new MaxForm();
_Max.Show();
Run Code Online (Sandbox Code Playgroud)
和 _Min 形式类似
| 归档时间: |
|
| 查看次数: |
50129 次 |
| 最近记录: |