Gewusst wie: Übergeben von Objekten an Prozeduren
Aktualisiert: November 2007
In Visual Basic können Sie Objekte als Argumente an Prozeduren übergeben. Dabei gehen Sie so vor wie bei der Übergabe anderer Argumenttypen. Die genaue Vorgehensweise wird im Folgenden beschrieben.
So übergeben Sie eine neue Instanz eines Formulars an eine Prozedur
Öffnen Sie ein Projekt, erstellen Sie ein neues Formular mit dem Namen Form1, und fügen Sie eine Befehlsschaltfläche mit dem Namen Button1 hinzu.
Kopieren Sie folgenden Code in das Formular:
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
Sie können ein Objekt auch in Form eines Verweises als Argument übergeben und das Argument anschließend innerhalb der Prozedur auf ein neues Objekt festlegen.
So übergeben Sie einen Objektverweis an eine Prozedur in einem anderen Formular
Öffnen Sie ein Projekt, und erstellen Sie ein Formular mit der Bezeichnung Form1.
Fügen Sie ein zweites Formular mit der Bezeichnung Form2 hinzu.
Positionieren Sie in jedem Formular jeweils ein Bildfeld-Steuerelement.
Geben Sie dem Bildfeld in Form1 den Namen PictureBox1.
Geben Sie dem Bildfeld in Form2 den Namen PictureBox2.
Weisen Sie PictureBox2 ein Bild zu, indem Sie im Eigenschaftenfenster auf die Eigenschaft Image klicken. Sie können ein beliebiges kleines Bild verwenden. BMP- und JPG-Dateien finden Sie im Windows-Verzeichnis.
Fügen Sie in Form2 das folgende Codefragment ein:
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
Fügen Sie dem Form1_Click-Ereignishandler in Form1 den folgenden Code hinzu:
Protected Sub Form1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Dim newForm2 As New Form2 newForm2.GetPicture(PictureBox1) End Sub
Führen Sie die Anwendung aus, und klicken Sie auf Form1. Das Bild von Form2 wird im Bildfeld in Form1 angezeigt.
Die Form1_Click-Ereignisprozedur ruft die GetPicture-Prozedur in Form2 auf und übergibt ihr das leere Bildfeld. Die GetPicture-Prozedur in Form2 weist die Image-Eigenschaft des Bildfelds in Form2 dem leeren Bildfeld in Form1 zu, und das Bild aus Form2 wird in Form1 angezeigt.