ShowDialog()同时通过ShowDialog()显示另一个表单,同时关闭两个表单?

时间:2010-01-29 11:05:30

标签: c# winforms showdialog

我有以下情况:

  1. ParentForm使用WelcomeForm打开ShowDialog
  2. WelcomeForm包含一个按钮,可使用NewProjectForm
  3. 打开ShowDialog
  4. 当用户点击OK上的NewProjectForm时,会创建一个新项目并关闭两个表单(良好行为)
  5. 当用户点击CANCEL上的NewProjectForm时,两个表单都已关闭(可理解的行为,但不是理想的行为)。
  6. 我怀疑这与DialogResultDialogResult.None 上实际为CANCEL NewProjectForm

    有某种关系

    如果两种表格都没有关闭,我怎样才能得到上述情况?

    修改
    用于打开NewProjectForm的代码:

    ProjectNew projectNew = new ProjectNew();
    projectNew.StartPosition = FormStartPosition.CenterParent;
    projectNew.ShowDialog(this);
    

    用于打开WelcomeForm的代码:

    Welcome welcome = new Welcome();
    welcome.StartPosition = FormStartPosition.CenterParent;
    welcome.ShowDialog(this);
    

    注意:NewProjectForm Welcome打开,但由ParentForm打开

    编辑2
    奇怪的东西;我创建了一个具有相同代码/情境的新项目,它不会重现此行为......

3 个答案:

答案 0 :(得分:1)

这是一个长期存在的问题,我已经碰过几次了。 This帖子有更多的讨论,以及解决方法。

它显然已经在.Net 3.5 SP1中修复了(安装SP1后我再也无法重现它),虽然我没有看到任何关于它肯定已修复的官方消息。

答案 1 :(得分:1)

我被这个咬了,因为我从另一个表单复制/粘贴了一些按钮,没有意识到其中一个按钮将DialogResult属性设置为 DialogResult.Cancel

单击时,这是设置包含表单的DialogResult,导致它关闭。

将其重置为 DialogResult.None 解决了问题。

因此,请检查所有模态对话框上的DialogResult属性。

答案 2 :(得分:0)

删除了几个按钮,添加了一个新的:解决了。
所以我认为它应该是一个DialogResult,不知何故,奇怪的东西。