В ответе на недавний вопрос, который у меня был (здесь), Ханс Пассант заявил, что я должен установить DialogResult
для закрытия моих форм вместо form.Close()
хотя я не могу понять, почему?
Если я правильно прочитал, в документации MSDN указано, что это просто скроет форму, а не будет правильно утилизировать ее, что я считаю .Close()
?
Извлечь из документации.
Метод Close не вызывается автоматически, когда пользователь нажимает кнопку "Закрыть" диалогового окна или задает значение свойства DialogResult. Вместо этого форма скрыта и может быть показана снова без создания нового экземпляра диалогового окна. Из-за этого поведения вы должны вызвать метод Dispose формы, когда форма больше не нужна вашему приложению.
С другой стороны, Microsoft создала страницу поддержки , в которой говорится, как использовать свойство DialogResult и в разделе "Проверить его работу" из этого говорится, что нажатие так закрывает форму.
Итак, мой вопрос в два раза, я должен продолжать использовать Close или DialogResult; и результат диалога закрывает или скрывает форму. Из кода, который я сделал ниже (простая форма с двумя кнопками), казалось бы, что он действительно скрыт только тогда, когда точка останова на this.Close()
попадает... (с комментарием this.Close()
, форма все еще исчезает, просто не уверен скрытые или нет)
public Form1()
{
InitializeComponent();
button1.Click += (s, e) =>
{
//I edited my question to include using
using(Form1 form = new Form1())
{
form.ShowDialog();
}
};
button2.Click += (s, e) =>
{
this.DialogResult = DialogResult.OK;
this.Close();
};
}