正如标题所说,我有一个WinForms
窗口,有时会在DialogResult
被调用后立即将Cancel
属性设置为ShowDialog
。
窗口显示如下:
bool isSuccess = (ShowDialog() == System.Windows.Forms.DialogResult.OK);
现在大部分时间,DialogResult
在首次实例化窗口时设置为None
,应该如此。在这些情况下,窗口将保持打开/有效,直到DialogResult
设置为None
以外的其他内容。
我甚至将此功能更改为:
this.DialogResult = System.Windows.Forms.DialogResult.None;
bool isSuccess = (ShowDialog() == System.Windows.Forms.DialogResult.OK);
有时候,DialogResult
会立即成为Cancel
。
当自动设置为DialogResult
时,我的代码中没有任何地方可以随时随地设置或与Cancel
属性进行交互。
此外,如果我在调用ShowDialog
后立即在线上中断,则导致ShowDialog
调用的整个堆栈跟踪相同 - 行换行。
鉴于实际上没有任何内容与DialogResult
属性进行交互,我完全不知道如何阻止它。
答案 0 :(得分:0)
你是怎么关闭窗户的?如果使用X关闭它,结果将自动设置为DialogResult.Cancel(请参阅here)
当表单显示为模式对话框时,单击“关闭”按钮(表单右上角带有X的按钮)会导致隐藏表单并将DialogResult属性设置为DialogResult。取消。当用户单击对话框的“关闭”按钮或设置DialogResult属性的值时,不会自动调用Close方法。相反,表单是隐藏的,可以再次显示,而无需创建对话框的新实例。由于此行为,您必须在应用程序不再需要该表单时调用表单的Dispose方法。
编辑: 如果我理解正确,你还要提到它正常工作"当它第一次实例化时#34;。这是否意味着您在关闭后重新使用相同的表单?如果是这样,则不支持此功能。关闭后,您必须创建表单的新实例以再次显示它。