В ответе на недавний вопрос, который у меня был (здесь), Ханс Пассант заявил, что я должен установить 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();
};
}