none
VB.Net 폼 밖에서 리스트박스에 아이템 추가 RRS feed

  • 질문

  • A라는 폼에 리스트 박스가 있는데

    B라는 모듈에서 Sub로 A의 리스트 박스에 추가를 하려고 하면 리스트박스에 추가가 되어있지 않습니다.

    오류가 나는것도아니고, 해당 코드에서 무한루프를 도는것도 아니고, 추가 명령만 무시가 되는것같습니다.

    왜그런건가요? 해결방법은?

    2016년 7월 2일 토요일 오후 6:21

답변

  • 안녕하세요.

    간단하게 샘플을 만들어서 설명드리겠습니다.

    말씀하신대로 A 라는 폼을 만들어서 

    1. 리스트박스

    2. 버튼

    을 배치합니다.

    폼 전체의 소스는 아래와 같습니다.

    Public Class Form1
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Module1.mod_test(Me)
    
        End Sub
    End Class
    


    그리고, 모듈을 하나 생성합니다.

    모듈의 내용은 샘플로 아래와같이 생성해보았습니다.

    Module Module1
    
        Public Sub mod_test(targetForm As Form1)
    
            Dim al As ArrayList = New ArrayList()
            al.Add("test1")
            al.Add("test2")
            al.Add("test3")
            al.Add("test4")
    
            targetForm.ListBox1.DataSource = al
    
        End Sub
    
    End Module
    

    전체적인 움직임을 간단히 설명드리자면,

    폼에서 자신을 넘겨주어 모듈에서 그 자신에게 추가할수있는 인스턴스를 넘겨주는 것입니다.

    방법이야 여러가지 방법이 존재하겠지만, 간단한 예를 들어보았습니다.

    전체 움직임을 정리하자면 아래와 같습니다.

    1. 폼에서 특정 이벤트(버튼 클릭)를 통해서 모듈을 호출합니다.

    2. 모듈에서는 리스트박스 객체에 접근가능한 폼 인스턴스를 넘겨받음으로써 전체권한을 부여받게 됩니다.

    3. 모듈의 sub 내부처리에서는 넘겨받은 객체의 리스트박스에 가공한 리스트를 셋팅합니다.

    4. 결과적으로 화면에서는 셋팅된 리스트내용이 보여지게 됩니다.

    2, 3 부분을 다른방법으로도 얼마든지 바꾸어 구현할수 있습니다만

    B라는 모듈에서 Sub로 A의 리스트 박스에 추가를 하려고 하면   <--- 

    이라고 하신 부분이 있어서 위와같이 예를 들어보았습니다.

    도움되시길 바랍니다.


    프로그램 개발에는 정답이 없다.

    2016년 7월 4일 월요일 오전 4:17