지식인에서 C# 관련 질문들을 보다보면 간단한 질문임에도 불구하고 답을 달기 어려운 질문들(변경해야 하는 파일이 많거나 코드가 긴 것 등)이나 주로 하는 질문들이 꽤 많이 보입니다.
그 중에서도 많이 보는 질문들은 "폼1에서 폼2를 열고, 폼2의 값을 유지시키고 싶어요" 등 두 개 이상의 폼을 활용하는 것에 대한 질문이 꽤 많이 보입니다.
그래서 간단하게 폼을 관리하는 클래스를 하나 만들었습니다.
FormTable.cs on GitHub (소스코드)
사용 방법은 정말 간단합니다.
프로젝트의 Program.cs를 아래처럼 변경합니다.
FormTable Example (C#)
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// 사용할 폼을 등록합니다.
// 기본적으로 Lazy initialization 을 수행합니다.
// 등록과 동시에 폼 개체를 생성하시고 싶은 경우
// 매개변수로 false 를 전달하시면 됩니다.
FormTable.Register<Form1>();
FormTable.Register<Form2>();
// 폼의 이름이 FormExample 인 경우엔
// FormTable.Register<FormExample>();
// 이렇게 호출하시면 됩니다.
// Application.Run(new Form1());
// 이 아닌 FormTable.Get 을 사용합니다.
Application.Run(FormTable.Get<Form1>());
}
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// 사용할 폼을 등록합니다.
// 기본적으로 Lazy initialization 을 수행합니다.
// 등록과 동시에 폼 개체를 생성하시고 싶은 경우
// 매개변수로 false 를 전달하시면 됩니다.
FormTable.Register<Form1>();
FormTable.Register<Form2>();
// 폼의 이름이 FormExample 인 경우엔
// FormTable.Register<FormExample>();
// 이렇게 호출하시면 됩니다.
// Application.Run(new Form1());
// 이 아닌 FormTable.Get 을 사용합니다.
Application.Run(FormTable.Get<Form1>());
}
이후 Form1에서 Form2의 제목을 변경해야 하거나 다이얼로그를 띄워야 하는 상황에선 아래처럼 간단하게 수행할 수 있습니다.
Form1에서 Form2의 제목을 바꾸는 방법: FormTable.Get<Form2>().Text = "Form1에서 Form2의 제목 바꾸기";
Form1에서 Form2를 다이얼로그로 띄우는 방법: FormTable.Get<Form2>().ShowDialog();
기존 방법이였다면
Form2 form2 = new Form2();
form2.ShowDialog();
이런 식으로 코드를 작성해야 해서 효율적이지 않고, 개체가 계속 새로 생성되어 값이 유지되지 않는 문제가 있었는데, FormTable 클래스를 사용하면 이러한 문제들은 가볍게 해결하실 수 있습니다. (다만, 아직 스레드에 안전하지는 않습니다)
'.NET > C#' 카테고리의 다른 글
C#을 이용하여 1:1 비동기 채팅 프로그램을 만들어보자! - 윈폼 디자인편 (6) | 2019.03.29 |
---|---|
C#을 이용하여 1:1 비동기 채팅 프로그램을 만들어보자! - 개념/프로토콜편 (5) | 2019.03.12 |
C#을 이용하여 간단한 1:N 비동기 채팅 프로그램을 만들어보자! - 클라이언트편 (28) | 2017.06.25 |
C#을 이용하여 간단한 1:N 비동기 채팅 프로그램을 만들어보자! - 서버편 (18) | 2017.06.03 |
C#을 이용하여 간단한 1:N 비동기 채팅 프로그램을 만들어보자! - 윈폼 디자인편 (11) | 2017.05.07 |