Gewusst wie: Ausführen von mehreren Aktionen für ein Objekt
Aktualisiert: November 2007
In Visual Basic müssen Sie im Allgemeinen ein Objekt in jeder Anweisung angeben, die eine seiner Methoden aufruft oder auf eine seiner Eigenschaften zugreift. Wenn Sie jedoch eine Reihe von Anweisungen haben, die alle dasselbe Objekt bearbeiten, können Sie mit einer With...End With-Struktur das Objekt einmal für alle Anweisungen angeben. Dadurch werden die Prozeduren schneller, und Sie vermeiden wiederholte Eingaben.
Beispiel
Im folgenden Beispiel werden die Vordergrundfarbe und der Schriftschnitt einer Label-Klasse in Abhängigkeit vom Wert eines Prozedurarguments festgelegt.
Imports draw = System.Drawing
' The preceding statement must appear at the beginning of the source file.
Dim alertLabel As New System.Windows.Forms.Label
Sub alertUser(ByVal value As Long)
With alertLabel
If value = 0 Then
.ForeColor = draw.Color.Red
.Font = New draw.Font(.Font, draw.FontStyle.Bold Or draw.FontStyle.Italic)
Else
.Forecolor = draw.Color.Black
.Font = New draw.Font(.Font, draw.FontStyle.Regular)
End If
End With
End Sub
Sie sehen, dass Schriftschnitte mit dem Or-Operator (Visual Basic) kombiniert werden. Dadurch wird die gewünschte Kombination der Bitflags angegeben. Der And-Operator (Visual Basic) würde 0 erzeugen, da alle FontStyle-Enumerationsmember andere Bits verwenden.
Beachten Sie außerdem die Verwendung der Imports-Anweisung (.NET-Namespace und Typ). Mit dieser Anweisung wird der Importalias draw eingerichtet, der bewirkt, dass alle Verweise auf System.Drawing-Member kürzer und leichter lesbar werden.
Sie können With...End With-Anweisungen auch schachteln, indem Sie sie wie im folgenden Beispiel ineinander stellen:
Sub setupForm()
Dim anotherForm As New System.Windows.Forms.Form
Dim button1 As New System.Windows.Forms.Button
With anotherForm
.Show()
.Top = 250
.Left = 250
.ForeColor = System.Drawing.Color.LightBlue
.BackColor = System.Drawing.Color.DarkBlue
.Controls.Add(button1)
With .Controls.Item(1)
.BackColor = System.Drawing.Color.Thistle
.Text = "Text on button1"
End With
End With
End Sub
In der geschachtelten With-Anweisung gilt die Syntax für das geschachtelte Objekt. Die Eigenschaften des Objekts in der äußeren With-Anweisung werden nicht festgelegt.
Siehe auch
Aufgaben
Gewusst wie: Übertragen der Steuerung aus einer Kontrollstruktur
Gewusst wie: Freigeben einer Systemressource
Gewusst wie: Beschleunigen des Zugriffs auf ein Objekt mit langem Qualifizierungspfad
Konzepte
Geschachtelte Steuerungsstrukturen
Referenz
With...End With-Anweisung (Visual Basic)