C#을


1

내가 새 양식을 열려면 말 폼을 닫을 수있는 좋은 방법 ..

TestForm test = new TestForm(); 

닫을 수있는 좋은 방법은 무엇입니까? 보다 정확하게는 close() 만 호출하면됩니까? dispose()가 호출되도록 using() {}을 사용해야합니까? 마지막으로, 대화 상자가 하나만 열리는 대화 상자가 열리는 이 있다고 가정하면 잘 알려진 패턴이 있습니까? 나는 그런이 폐쇄 될 때 "를 보내고"정적 필드에 및 널 (null) 종료 그것을 저장하는 등의 다른 선택이 있어요 ..

감사

  0

을 당신을 위해 맥락에서 작동하는 경우, 나는 항상 노력하고 형태와 사용 패턴을 사용하는 것이 좋습니다 것입니다. 22 feb. 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

개체가 IDisposable를 구현 할 때마다 using를 사용하는 것이 좋습니다를 . 이 단지 모달 대화 상자에 대한 작동합니다

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

그것은 try{}finally{} 블록 구문 상응하는, 그래서 예외가 중괄호 내부에 발생되는 경우에도, Dispose()이 개체에 호출됩니다.

  0

이 패턴은 메시지 루프가 결코 돌지 않기 때문에 아무 것도 할 수 없기 전에 창이 사라 지므로 쓸모 없게됩니다. 22 feb. 092009-02-22 01:35:01

  0

그는 사용 패턴을 사용할 때를 말하며 모달을 표시하지 않습니다. 단지 비 차단 호출 인 경우 Show()를 호출 한 직후에 사용 블록의 끝이 히트되고 리소스가 해제됩니다 .. 형태가 없어 졌어. 22 feb. 092009-02-22 01:48:06

  0

님이이를 반영하도록 수정했습니다. 22 feb. 092009-02-22 01:49:47