C # Хороший способ закрыть форму - PullRequest
1 голос
/ 22 февраля 2009

Скажите, что я хочу открыть новую форму ..

TestForm test = new TestForm(); 

Какой хороший способ закрыть его? Точнее, только вызов close () нормально? Должен ли я использовать using () {}, чтобы вызывался dispose ()? И, наконец, предположим, что есть диалог, который должен иметь только один экземпляр диалогового окна, есть ли хорошо "известный" образец? У меня есть разные варианты, такие как хранение в статическом поле, и обнуляя его, когда он закрыт ..

Спасибо

Ответы [ 2 ]

4 голосов
/ 22 февраля 2009

Рекомендуется использовать using всякий раз, когда объект реализует IDisposable. Это будет работать только для модального диалога:

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

Это синтаксически эквивалентно блоку try{}finally{}, поэтому даже если в фигурных скобках выдается исключение, Dispose() будет вызываться для вашего объекта.

1 голос
/ 22 февраля 2009

Что касается диалога с одним экземпляром (если он модальный, вам не о чем беспокоиться), вы можете сделать конструктор приватным и предоставить открытый статический метод для доступа к форме.

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...