C#关闭表单的好方法

时间:2009-02-22 01:12:14

标签: c# forms design-patterns

说我想开一个新表格..

TestForm test = new TestForm(); 

关闭它的好方法是什么?更确切地说,只是调用close()确定? 我应该使用using(){}来调用dispose()吗?最后,假设有 一个对话框应该只打开一个对话框的实例,有一个 好“已知”的模式?我有不同的选择,比如将它存放在静态场中, 并且在关闭时将其“清空”..

谢谢

2 个答案:

答案 0 :(得分:4)

当对象实现using时,最好使用IDisposable。这仅适用于模态对话框:

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

它在句法上等同于try{}finally{}块,因此即使在花括号内抛出异常,也会在对象上调用Dispose()

答案 1 :(得分: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();