C#的好方法来关闭窗体


1

说我想打开一个新的形式..

TestForm test = new TestForm(); 

什么是关闭它的好办法吗?更确切地说,只是调用close()好吗? 我应该使用using(){}如此dispose()被调用吗?最后,假设有一个对话框,该对话框应该只打开一个对话框的实例,是否有 以及“已知”模式?我有不同的选择,如将其存储在一个静态字段, 和空值“ing”的它,当它被关闭..

感谢

  0

如果在上下文中为你的作品,我会建议总是试图与形式使用使用模式。 22 2月. 092009-02-22 01:16:24

1

就单一实例对话框而言(如果它是模态的,您不必担心),您可以使构造函数为私有,并提供一个公共静态方法来访问该窗体。

public class MyForm : Form 
{ 
    protected MyForm() 
    { 
    } 

    protected int MyValue { get; set; } 

    public static int GetResult() 
    { 
     using(MyForm myForm = new MyForm()) 
     { 
      if(myForm.ShowDialog == DialogResult.OK) 
       return myForm.MyValue; 
     } 
     return -1; 
    } 
} 

这将迫使呼叫通过的形式..

int someValue = MyForm.GetResult(); 

4

它是使用using每当对象实现IDisposable好习惯。这将只有一个模态对话框工作:

using (TestForm test = new TestForm()) 
{ 
    .... 
} 

这句法相当于一个try{}finally{}块,所以即使有异常的大括号内抛出,Dispose()将您的对象上调用。

  0

这个模式非常棒,除了窗口将无用,因为它在任何事情都可以完成之前会消失,因为它的消息循环永远不会旋转。 22 2月. 092009-02-22 01:35:01

  0

他指的是当你使用使用模式,并没有显示模式,如果你只是显示表单,它是一个非阻塞调用,所以在调用Show()后立即使用块的结束命中并释放资源..形式消失了。 22 2月. 092009-02-22 01:48:06

  0

已编辑,以反映这一点。 22 2月. 092009-02-22 01:49:47