DialogResult的问题

WinForm中遇到的一些情况(VS2008)

 

情况如下:打开主窗口前,打开模态窗口Login,Login用于登录,点击提交后进行验证,验证通过返回主页面。btnSubmit用于提交验证数据是否正确。

如过设置btnSubmit.DialogResult=DialogResult.Ok(或者其他),则验证成功退出窗口要点击两次btnSubmit才能返回主窗口

 

解决: btnSubmit.DialogResult=DialogResult.Ok换为 this.DialogResult=DialogResult.OK

 

原因:(MSDN)

窗体的对话框结果是当窗体显示为模式对话框时从该窗体返回的值。如果窗体显示为对话框,用 DialogResult 枚举中的值设置此属性将设置该窗体的对话框结果值、隐藏模式对话框并将控制返回给调用窗体。此属性通常由窗体上 Button 控件的 DialogResult 属性设置。当用户单击 Button 控件时,分配给 ButtonDialogResult 属性的值将分配给该窗体的 DialogResult 属性。

当窗体显示为模式对话框时,单击“关闭”按钮(窗体右上角带 X 的按钮)会隐藏窗体并将 DialogResult 属性设置为 DialogResult.Cancel。当用户单击对话框的“关闭”按钮或设置 DialogResult 属性的值时,不会自动调用 Close 方法。而是隐藏该窗体并可重新显示该窗体,而不用创建该对话框的新实例。因为此行为,所以当应用程序不再需要该窗体时,必须调用该窗体的 Dispose 方法。

可以使用此属性确定对话框是如何关闭的,以便正确处理在该对话框中执行的操作。

我的观点:可能是由于第一次点击时仅仅将返回值付给了按钮,但此时窗口的返回值仍是空的;第二次点击时,Form.DialogResult才被赋值

希望大家能说说自己的观点,相信这个问题有很多人遇到过

posted @ 2009-12-14 16:58  命运之子  阅读(1830)  评论(0)    收藏  举报