[Controls] [vb.net] 윈도우 폼에서 자식 컨트롤의 특정(Closed) 메서드 자동 호출하기

회원사진
하나를하더라도최선을
2024-07-12 10:54 251 0

본문



윈도우 폼 애플리케이션을 개발할 때 종종 각 컨트롤이 폼이 닫힐 때 특정 작업을 수행해야 할 필요가 있습니다.


예를 들어, 데이터를 저장하거나 리소스를 정리하는 등의 작업이 이에 해당합니다.


이를 위해 유용한 방법 중 하나는 컨트롤이 자체적으로 Closed 메서드를 구현하여 이러한 작업을 처리하는 것입니다.


여기서 소개할 소스 코드는 간단한 윈도우 폼의 FormClosed 이벤트에서 모든 컨트롤에 대해 Closed 메서드를 호출하는 방법을 구현한 것입니다.


이 방법은 각 컨트롤이 자체적으로 Closed 메서드를 구현하고 있는지 확인하고, 구현되어 있다면 해당 메서드를 실행합니다.


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
 


위 소스 코드는 다음과 같은 기능을 수행합니다:

  1. fMain_FormClosed 메서드: 이는 윈도우 폼의 FormClosed 이벤트 핸들러로서, 폼이 닫힐 때마다 폼 안에 있는 모든 컨트롤을 순회합니다.
  2. HasClosedMethod 함수: 이 함수는 각 컨트롤이 Closed 메서드를 구현하고 있는지를 확인합니다. 만약 해당 메서드가 구현되어 있다면 True를 반환하고, 그렇지 않으면 False를 반환합니다.

사용 예시

이 소스 코드를 사용하면 각 컨트롤이 자체적으로 폼이 닫힐 때 수행할 작업을 정의할 수 있습니다. 예를 들어, 텍스트 상자 컨트롤에서 데이터를 저장하거나, 파일 브라우저에서 열린 파일을 닫는 등의 작업을 Closed 메서드에 구현할 수 있습니다. 이를 통해 코드의 유지보수성을 높이고, 각 컨트롤의 역할을 명확히 할 수 있습니다.

결론

윈도우 폼 개발에서 각 컨트롤이 폼이 닫힐 때 수행해야 할 작업을 자동으로 처리하려면 Closed 메서드를 구현하는 것이 효과적일 수 있습니다. 위에서 소개한 소스 코드를 참고하여, 여러분의 애플리케이션에서 이를 활용해 보세요. 각 컨트롤의 특정 동작을 명확히 정의하고, 코드의 재사용성과 가독성을 높이는 데 도움이 될 것입니다.

댓글목록0

등록된 댓글이 없습니다.