gpt4 book ai didi

c# - 为什么关闭嵌套的子对话框也会关闭父对话框?

转载 作者:太空狗 更新时间:2023-10-29 22:12:37 24 4
gpt4 key购买 nike

我使用 ShowDialog 打开一个作为模态对话框的窗体。此对话框又允许使用 ShowDialog 再次将另一个窗体作为模式对话框打开。

当最里面的对话框关闭时,这会导致其父对话框也关闭。为什么会发生这种情况,我该如何预防?

我已经创建了这个问题的 hello world 版本来说明这一点。

表格 1:

Form 1

private void OpenForm2Button_Click(object sender, EventArgs e)
{
Form2 testForm = new Form2();
DialogResult dialogResult = new DialogResult();
dialogResult = testForm.ShowDialog();
MessageBox.Show("Form 2 returned: " + Convert.ToString(dialogResult));
}

表格 2:

Form 2

...
this.Form2OKButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Form2CancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
...
this.AcceptButton = this.Form2OKButton;
this.CancelButton = this.Form2CancelButton;
...
private void OpenForm3Button_Click(object sender, EventArgs e)
{
Form3 testForm = new Form3();
DialogResult dialogResult = new DialogResult();
dialogResult = testForm.ShowDialog();
MessageBox.Show("Form 3 returned: " + Convert.ToString(dialogResult));
}

表格 3:

Form 3

...
this.Form3OKButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Form3CancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
...
this.AcceptButton = this.Form3OKButton;
this.CancelButton = this.Form3CancelButton;

重现步骤:

  • 点击“打开表格 2”
  • 点击“打开表格 3”
  • 点击“取消”

Form 3 按预期以 DialogResult == Cancel 关闭,但 Form 2 也以 DialogResult == Cancel 关闭(并非预期)。

最佳答案

编辑:

问题是这个(文件:Form2.Designer.cs):

this.OpenForm3Button.DialogResult = System.Windows.Forms.DialogResult.Cancel;

当您单击 OpenForm3Button 时,在 OpenForm3Button_Click 事件处理程序结束后,form.DialogResult 自动设置为 取消 关闭。

重置 OpenForm3ButtonDialogResult 属性,它将按预期工作:)

关于c# - 为什么关闭嵌套的子对话框也会关闭父对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9792251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com