[Controls] [vb.net] 윈도우 폼에서 자식 컨트롤의 특정(Closed) 메서드 자동 호출하기
![회원사진](http://program1472.com/data/member/profile/program1472.jpg)
하나를하더라도최선을
2024-07-12 10:54
251
0
본문
윈도우 폼 애플리케이션을 개발할 때 종종 각 컨트롤이 폼이 닫힐 때 특정 작업을 수행해야 할 필요가 있습니다.
예를 들어, 데이터를 저장하거나 리소스를 정리하는 등의 작업이 이에 해당합니다.
이를 위해 유용한 방법 중 하나는 컨트롤이 자체적으로 Closed
메서드를 구현하여 이러한 작업을 처리하는 것입니다.
여기서 소개할 소스 코드는 간단한 윈도우 폼의 FormClosed
이벤트에서 모든 컨트롤에 대해 Closed
메서드를 호출하는 방법을 구현한 것입니다.
이 방법은 각 컨트롤이 자체적으로 Closed
메서드를 구현하고 있는지 확인하고, 구현되어 있다면 해당 메서드를 실행합니다.
![ebc5722a48991ee4692cc57eb041287c_1720749266_0767.jpg ebc5722a48991ee4692cc57eb041287c_1720749266_0767.jpg](../../../data/editor/2407/ebc5722a48991ee4692cc57eb041287c_1720749266_0767.jpg)
Private Sub fMain_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
For Each ctl As Object In Me.Controls
If HasClosedMethod(ctl) Then
Dim method As MethodInfo = ctl.GetType().GetMethod("Closed")
method.Invoke(ctl, Nothing)
Else
Console.WriteLine("Closed 메서드가 구현되지 않은 컨트롤입니다.")
End If
Next
End Sub
' 컨트롤이 Closed 메서드를 구현했는지 확인하는 함수
Private Function HasClosedMethod(control As Control) As Boolean
Dim method As MethodInfo = control.GetType().GetMethod("Closed")
Return method IsNot Nothing AndAlso method.ReturnType Is GetType(Void)
End Function
위 소스 코드는 다음과 같은 기능을 수행합니다:
fMain_FormClosed
메서드: 이는 윈도우 폼의FormClosed
이벤트 핸들러로서, 폼이 닫힐 때마다 폼 안에 있는 모든 컨트롤을 순회합니다.HasClosedMethod
함수: 이 함수는 각 컨트롤이Closed
메서드를 구현하고 있는지를 확인합니다. 만약 해당 메서드가 구현되어 있다면True
를 반환하고, 그렇지 않으면False
를 반환합니다.
사용 예시
이 소스 코드를 사용하면 각 컨트롤이 자체적으로 폼이 닫힐 때 수행할 작업을 정의할 수 있습니다. 예를 들어, 텍스트 상자 컨트롤에서 데이터를 저장하거나, 파일 브라우저에서 열린 파일을 닫는 등의 작업을 Closed
메서드에 구현할 수 있습니다. 이를 통해 코드의 유지보수성을 높이고, 각 컨트롤의 역할을 명확히 할 수 있습니다.
결론
윈도우 폼 개발에서 각 컨트롤이 폼이 닫힐 때 수행해야 할 작업을 자동으로 처리하려면 Closed
메서드를 구현하는 것이 효과적일 수 있습니다. 위에서 소개한 소스 코드를 참고하여, 여러분의 애플리케이션에서 이를 활용해 보세요. 각 컨트롤의 특정 동작을 명확히 정의하고, 코드의 재사용성과 가독성을 높이는 데 도움이 될 것입니다.
댓글목록0