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를 사용할 때 주의해야 할 점이 있습니다.
- Thread 안전성 : Application.OpenForms는 스레드에 안전하지 않습니다.
따라서 별도의 스레드에서 컬렉션을 사용하여 동기화해야 합니다.
예제) Invoke 메서드를 사용하여 UI 스레드에서 실행하도록 함
this.Invoke((MethodInvoker)delegate { foreach (Form form in Application.OpenForms) { Console.WriteLine(form.Name); } });
- 컬렉션 수정 불가 : Application.OpenForms에서 Form을 직접 추가하거나 제거하면 안 됩니다.
Form은 자동으로 열릴 때 추가되고 닫힐 때 자동으로 삭제됩니다. - Form Visible 상태 확인 불가 : Application.Forms에 포함된 Form은 반드시 Visible 상태가 아닐 수 있습니다.
보이는 상태로 만들려면 Form.Visible 속성을 이용하여 보이게 해야 합니다.
| 마무리
프로젝트를 진행하면서 Form이 켜졌는지 확인하고 처리해야 하는 부분이 있어
알게 된 Application.OpenForms에 대해 알아보았습니다.
틀린 점이 있거나 질문이 있으시면 댓글로 남겨주세요!
감사합니다 :)
728x90
반응형
'C# > Winform' 카테고리의 다른 글
C# Json 파일을 읽어 PropertyGrid 컨트롤 적용하는 방법 (0) | 2024.01.12 |
---|---|
C# 크로스 스레드 (Cross Thread) 이해와 해결 방법 (0) | 2024.01.11 |
C# Winform DataGridView Header Cell 높이 변경 (0) | 2023.12.20 |
C# Winform DataGridView Column 높이 변경 (0) | 2023.12.19 |
C# Winform DataGridView 이해 (0) | 2023.12.19 |