我有以下情况:
ParentForm
使用WelcomeForm
打开ShowDialog
。WelcomeForm
包含一个按钮,可使用NewProjectForm
ShowDialog
OK
上的NewProjectForm
时,会创建一个新项目并关闭两个表单(良好行为)CANCEL
上的NewProjectForm
时,两个表单都已关闭(可理解的行为,但不是理想的行为)。我怀疑这与DialogResult
(DialogResult.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
奇怪的东西;我创建了一个具有相同代码/情境的新项目,它不会重现此行为......
答案 0 :(得分:1)
这是一个长期存在的问题,我已经碰过几次了。 This帖子有更多的讨论,以及解决方法。
它显然已经在.Net 3.5 SP1中修复了(安装SP1后我再也无法重现它),虽然我没有看到任何关于它肯定已修复的官方消息。
答案 1 :(得分:1)
我被这个咬了,因为我从另一个表单复制/粘贴了一些按钮,没有意识到其中一个按钮将DialogResult属性设置为 DialogResult.Cancel
单击时,这是设置包含表单的DialogResult,导致它关闭。
将其重置为 DialogResult.None 解决了问题。
因此,请检查所有模态对话框上的DialogResult属性。
答案 2 :(得分:0)
删除了几个按钮,添加了一个新的:解决了。
所以我认为它应该是一个DialogResult,不知何故,奇怪的东西。