DialogResult的问题
WinForm中遇到的一些情况(VS2008)
情况如下:打开主窗口前,打开模态窗口Login,Login用于登录,点击提交后进行验证,验证通过返回主页面。btnSubmit用于提交验证数据是否正确。
如过设置btnSubmit.DialogResult=DialogResult.Ok(或者其他),则验证成功退出窗口要点击两次btnSubmit才能返回主窗口
解决: btnSubmit.DialogResult=DialogResult.Ok换为 this.DialogResult=DialogResult.OK
原因:(MSDN)
窗体的对话框结果是当窗体显示为模式对话框时从该窗体返回的值。如果窗体显示为对话框,用 DialogResult 枚举中的值设置此属性将设置该窗体的对话框结果值、隐藏模式对话框并将控制返回给调用窗体。此属性通常由窗体上 Button 控件的 DialogResult 属性设置。当用户单击 Button 控件时,分配给 Button 的 DialogResult 属性的值将分配给该窗体的 DialogResult 属性。
当窗体显示为模式对话框时,单击“关闭”按钮(窗体右上角带 X 的按钮)会隐藏窗体并将 DialogResult 属性设置为 DialogResult.Cancel。当用户单击对话框的“关闭”按钮或设置 DialogResult 属性的值时,不会自动调用 Close 方法。而是隐藏该窗体并可重新显示该窗体,而不用创建该对话框的新实例。因为此行为,所以当应用程序不再需要该窗体时,必须调用该窗体的 Dispose 方法。
可以使用此属性确定对话框是如何关闭的,以便正确处理在该对话框中执行的操作。
我的观点:可能是由于第一次点击时仅仅将返回值付给了按钮,但此时窗口的返回值仍是空的;第二次点击时,Form.DialogResult才被赋值希望大家能说说自己的观点,相信这个问题有很多人遇到过

浙公网安备 33010602011771号