C#/Winform

C# Form Show 및 존재 여부 확인

우준세 2024. 1. 9. 23:30
728x90
반응형

 

이번 포스팅은 C#의 Windows Forms 애플리케이션을 사용하면서

알게 된 방법에 대해 정리해 보았습니다.


| Form의 존재 여부 확인 

Form을 사용하면서 Form을 초기화하고 생성했을 때

Form이 생성 됐는지 안 됐는지 확인하는 방법을 알고 싶었습니다.

존재 여부에 따라 코딩을 하고 싶었고 Application 컬렉션에서 방법을 찾았습니다.

 

| Application.OpenForms

Application.OpenForms는 현재 실행 중인 애플리케이션에서 열린 모든 Form을 포함하는 컬렉션입니다.

이 컬렉션은 FormCollection 타입으로, Form이 열릴 때 추가되고 닫힐 때 제거 됩니다.

 

| Application.OpenForms 활용 방법 

1. 특정 Form의 존재 여부 확인 

foreach (Form f in Application.OpenForms)
{
    if (f.Name == "Form1")
    {
        break;
    }
}

 

2. 모든 Form에 대한 작업 수행 

foreach (Form form in Application.OpenForms)
{
    Console.WriteLine(form.Name);
}

 

위 예제와 같이 실행하면 특정 Form 또는 전체 Form에 대한 존재 여부를 확인할 수 있으며

bool 변수등을 사용하여 더욱 많이 활용할 수 있습니다.


| 주의 사항

Application.OpenForms를 사용할 때 주의해야 할 점이 있습니다.

 

  1. Thread 안전성 : Application.OpenForms는 스레드에 안전하지 않습니다. 
    따라서 별도의 스레드에서 컬렉션을 사용하여 동기화해야 합니다.

    예제) Invoke 메서드를 사용하여 UI 스레드에서 실행하도록 함 
    this.Invoke((MethodInvoker)delegate {
        foreach (Form form in Application.OpenForms)
        {
            Console.WriteLine(form.Name);
        }
    });
  2.  컬렉션 수정 불가 : Application.OpenForms에서 Form을 직접 추가하거나 제거하면 안 됩니다. 
    Form은 자동으로 열릴 때 추가되고 닫힐 때 자동으로 삭제됩니다.
  3.  Form Visible 상태 확인 불가 : Application.Forms에 포함된 Form은 반드시 Visible 상태가 아닐 수 있습니다. 
    보이는 상태로 만들려면 Form.Visible 속성을 이용하여 보이게 해야 합니다.

| 마무리

프로젝트를 진행하면서 Form이 켜졌는지 확인하고 처리해야 하는 부분이 있어

알게 된 Application.OpenForms에 대해 알아보았습니다.

 

틀린 점이 있거나 질문이 있으시면 댓글로 남겨주세요! 

 

감사합니다 :) 

 

 

 

728x90
반응형