引用msdn
当窗体显示为模式对话框中时,单击关闭按钮 (与窗体的右上角的 X 按钮) 后,窗体会被隐藏,DialogResult属性设置为
DialogResult.Cancel
。 与非模式窗体不同Close当用户单击关闭窗体按钮的对话框中,或设置的值不由.NET Framework 调用方法DialogResult属性。 而是窗体处于隐藏状态,而无需创建新实例对话框的可再次显示。 因为窗体显示为对话框中隐藏的而不是已关闭,则必须调用Dispose窗体时应用程序不再需要在窗体的方法。
意味着:
模式对话框时(showDialog),单击关闭按钮 (与窗体的右上角的 X 按钮)后,窗体只是隐藏,并没有释放资源,而且还可以再次显示出来,因为后续代码可以需要读取对话框返回的DialogResult属性,如果这时候释放了就会报错。
非模式窗体时(show),点击关闭按钮后,会自动进入资源回收,不能再次访问窗体。