C# Хороший способ закрыть форму


1

, я хочу, чтобы открыть новую форму ..

TestForm test = new TestForm(); 

Что такое хороший способ, чтобы закрыть его? Точнее, вызывает только close() ok? Должен ли я использовать use() {}, так вызывается dispose()? И, наконец, предположим, что есть диалог, который должен иметь только один экземпляр открытого диалога, есть ли хорошо известный шаблон? У меня есть различные варианты, такие как хранить его в статическом поле, и нуль- «ИНГ», когда она закрыта ..

Благодаря

  0

Если он работает в контексте для вас, я хотел бы предложить, чтобы всегда попробовать и использовать, используя шаблон с формами. 22 фев. 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 фев. 092009-02-22 01:35:01

  0

Он имеет в виду, когда вы используете шаблон использования и не показываете модальный, если вы просто показываете форму, это неблокирующий вызов, поэтому сразу после вызова Show() удаляется конец используемого блока, а ресурсы освобождаются .. форма ушла. 22 фев. 092009-02-22 01:48:06

  0

отредактированы, чтобы отразить это. 22 фев. 092009-02-22 01:49:47