방법: 프로시저에 개체 전달
업데이트: 2007년 11월
Visual Basic에서는 다른 종류의 인수를 전달할 때와 같은 방법으로 개체를 인수로서 프로시저에 전달할 수 있습니다. 다음 프로시저는 이러한 방법을 보여 줍니다.
폼의 새 인스턴스를 프로시저에 전달하려면
프로젝트를 열고 Form1이라는 새 폼을 만든 다음 Button1이라는 명령 단추를 폼에 추가합니다.
다음 코드를 폼으로 복사합니다.
Private Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim newForm As New Form1 newForm.Show() CenterForm(newForm) End Sub Sub CenterForm(ByVal TheForm As Form) ' Centers the form on the screen. Dim RecForm As Rectangle = Screen.GetBounds(TheForm) TheForm.Left = CInt((RecForm.Width - TheForm.Width) / 2) TheForm.Top = CInt((RecForm.Height - TheForm.Height) / 2) End Sub
참조를 통해 개체를 인수로 전달한 다음 프로시저 안에서 이 인수를 새 개체로 설정할 수도 있습니다.
다른 폼의 프로시저에 개체 참조를 전달하려면
프로젝트를 열고 Form1이라는 폼을 만듭니다.
Form2라는 두 번째 폼을 추가합니다.
각 폼에 picture box 컨트롤을 배치합니다.
Form1의 그림 상자 이름을 PictureBox1로 지정합니다.
Form2의 그림 상자 이름을 PictureBox2로 지정합니다.
속성 창에서 Image 속성을 클릭하여 PictureBox2에 그림을 지정합니다. 'Windows' 디렉터리에서 찾을 수 있는 .bmp 및 .jpg 파일을 포함하여 모든 작은 이미지를 사용할 수 있습니다.
다음 코드를 Form2에 추가합니다.
Public Sub GetPicture(ByVal x As PictureBox) Dim objX As PictureBox ' Assign the passed-in picture box to an object variable. objX = x ' Assign the value of the Picture property to the Form1 picture box. objX.Image = PictureBox2.Image End Sub
Form1의 Form1_Click 이벤트에 다음 코드를 추가합니다.
Protected Sub Form1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Dim newForm2 As New Form2 newForm2.GetPicture(PictureBox1) End Sub
응용 프로그램을 실행하고 Form1을 클릭합니다. Form2의 그림이 Form1의 그림 상자에 나타납니다.
Form1_Click 이벤트 프로시저는 Form2의 GetPicture 프로시저를 호출하고 빈 그림 상자를 이 프로시저에 전달합니다. Form2의 GetPicture 프로시저가 Form2에 있는 그림 상자의 Image 속성을 Form1의 빈 그림 상자에 할당하므로 Form2의 이미지가 Form1에 표시됩니다.