Eventhandling

' Fensterklasse
Public Class frmMyForm
    ' Objekt, das den Events auslöst, deklarieren
    ' Schlüsselwort "WithEvents" ist hierbei wichtig
    Private WithEvents MyMathObj As MathClass = New MathClass

    ' Funktion des Eventobjektes aufrufen, so dass letztendlich der Event angestoßen wird
    Private Sub AddValues()
        MyMathObj.Add(1, 2)
    End Sub

    ' Funktion, die durch den Event aufgerufen wird
    ' diese behandelt letztendlich den Event des MathClass-Objektes
    Private Sub ResultValue(ByVal sResult As String) Handles MyMathObj.ResultEvent
        Console.WriteLine(sResult)
    End Sub
End Class

' Beispielklasse, die den Event aufruft
Public Class MathClass
    ' Event, der ausgelöst wird deklarieren
    Public Event ResultEvent(ByVal sResult As String)

    ' Funktion, die den Event auslöst
    Public Sub Add(ByVal a As Integer, ByVal b As Integer)

        Dim sResult As String

        sResult = (a + b).ToString()

        ' Event aufrufen
        RaiseEvent ResultEvent(sResult)
    End Sub
End Class

XML-Dokumentation für einen Typ oder Member erstellen

Zur besseren Dokumentation von Quellcode ist es nützlich sogenannte XML-Dokumentationskommentare einzufügen. Diese Kommentare werden dann beim Programmieren im IntelliSense Auswahlfenster oder Objektbrowser angezeigt.

  1. Vorgehensweise:
    • Cursor im Code-Editor in die Zeile über dem Typ oder Member, zu dem eine Dokumentation erstellt werden soll.
    • ”’ (drei einfache Anführungszeichen) eingeben
    • nun wird ein XML-Skelett für den Typ oder Member im Code-Editor hinzugefügt
    • die Informationen müssen immer zwischen den entsprechenden Tags stehen
    • zusätzliche Zeilen müssen immer mit ”’ beginnen
    • Intellisense zeigt immer die Infos zw. ”’

      an

  2. Beispiel:
  3. Public Class MyClass
        ''' <summary>
        ''' Beschreibung für Variable iXY, die im Intellisense-Fenster angezeigt werden soll
        ''' </summary>
        Public iXY As Integer = -1
    
        ''' <summary>
        ''' Konstruktor
        ''' </summary>
        Public Sub New()
            ' Blah
        End Sub
    End Class
    
  4. Details: MSDN Hilfe unter “Gewusst wie: Erstellen einer XML-Dokumentation in Visual Basic”

Variable auf Gültigkeit überprüfen

' Funktion zum füllen von DataSet-Elementen
Public Function FillDataSet(ByRef dsGrid As DataSet) As Boolean
    Dim bRetVal As Boolean = False

    ' Wenn dsGrid existiert
    If Not IsNothing(dsGrid) Then
        dsGrid.Clear()

        ...
    End If

    Return bRetVal
End Function

Anwendungseinstellungen in My.Settings speichern

  1. Generell
    • bietet die Möglichkeit Anwendungseinstellungen anstatt in ini-Dateien direkt in der Anwendung zu speichern
  2. Anlegen/Editieren
    • Menü->Projekt->MeinProjektname-Eigenschaften… oder im Projektbaum->MeinProjektname->My Project->Settings.settings
    • Name: Propertyname
    • Typ: Propertytyp (String, Bool …)
    • Bereich: Benutzer
    • Wert: voreingestellter Wert
  3. Zugriff im Code
  4. ' Settings-Objekt erzeugen
    Private HCSettings As New MeinProjektname.My.MySettings
    
    Dim sText As String = HCSettings("Propertyname")
    HCSettings("Propertyname") = "Wert"
    
    ' im Projekt speichern
    HCSettings.Save()
    

bestehende Funktion überschreiben/neuer Handler

' Handler der Listbox hinzufügen
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  AddHandler ListBox1.SelectedValueChanged, AddressOf ListBox1_SelectedValueChanged
End Sub

' neuer Handler für ListBox1_SelectedValueChanged
Private Sub ListBox1_SelectedValueChanged(sender As Object, e As EventArgs)
  If ListBox1.SelectedIndex <> - 1 Then
     textBox1.Text = ListBox1.SelectedValue.ToString()
  End If
End Sub

Try/Catch/Finally

Try
   'Auszuführender Code
   ...
Catch ex As Exception
   ' wenn etwas bei try schief gelaufen ist, z.B. die entspr. Exception anzeigen
   MessageBox.Show("Fehler: " & ControlChars.CrLf & ex.ToString())
Finally
   ' abschließend noch etwas erledigen (optional)
   ' wird in jedem Falle ausgeführt
   ...
End Try