如果把winform窗体的FormBorderStyle属性设置成FixedDialog,则这个窗体显示出来为模式窗口,
向这个窗体上添加两个按钮,一个为Button_Submit,一个为Button_Cancel。
设置这个窗体的AcceptButton为Button_Submit,CancelButton为Button_Cancel;
设置Button_Submit按钮的DialogResult属性为OK,设置Button_Cancel按钮的DialogResult属性为Cancel;
使用 DialogResult result = formDBSet.ShowDialog(); 打开窗体;
这样在Button_Submit的Click事件中就不用添加this.close()了,窗体会自动关闭,并且可以从result值中获取关闭窗体是是那个按钮按下的。
如果不设置按钮的DialogResult属性,可以在Button_Submit的Click事件中添加this.DialogResult = DialogResult.OK;在Button_Cancel按钮的Click事件中添加this.DialogResult = DialogResult.Cancel。 这样做的好处是在Click事件中可以控制是否关闭,如果出错了,可以不关闭。
当窗体显示为模式对话框时,单击“关闭”按钮(窗体右上角带 X 的按钮)会隐藏窗体并将 DialogResult 属性设置为 DialogResult.Cancel。与无模式窗体不同,当用户单击对话框的关闭窗体按钮或设置 DialogResult 属性的值时,.NET Framework 不调用 Close 方法。窗体转而可以隐藏并可重新显示,而不用创建该对话框的新实例。因为未关闭显示为对话框的窗体,所以在您的应用程序不再需要该窗体时,必须调用该窗体的 Dispose 方法。