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

Liste von Objekten (Array) definieren und Listbox zuweisen

' erstmal eine Liste definieren, die Elemente der Liste sind Objekte
' der Klasse USState mit der Property LongName und ShortName
Dim USStates As New ArrayList()
USStates.Add(New USState("Alabama", "AL"))
USStates.Add(New USState("Washington", "WA"))
USStates.Add(New USState("West Virginia", "WV"))
USStates.Add(New USState("Wisconsin", "WI"))
USStates.Add(New USState("Wyoming", "WY"))

' Quelle ist das Array USStates
ListBox1.DataSource = USStates

' angezeigter Wert sind Werte aus der Spalte "LongName"
ListBox1.DisplayMember = "LongName"

' Schlüsselspalte ist der "ShortName"
ListBox1.ValueMember = "ShortName"

' Zugriff auf die Schlüsselspalte
ListBox1.SelectedValue = "Wert" ' String oder Interger, je nach Typ

oder

Dim sWert As String = ListBox1.SelectedValue

Nur Zahlen und Komma in einer Textbox akzeptieren

Public sDecimalSeparator As String = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator

Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tbQ.KeyPress, tbV.KeyPress
    ' Zahlen
    Dim sChars As String = "0123456789"
    ' Backspace (Delete)  
    sChars = sChars & ControlChars.Back
    ' akt. Dezimalseparator
    sChars = sChars & sDecimalSeparator

    ' Akt. Taste in der sChars-Liste? Wenn ja, Tastendruck verwerfen (als "behandelt" setzen).
    e.Handled = (sChars.IndexOf(e.KeyChar) < 0)
End Sub

Strings formatieren

  • Datumswert aus der Datenbank im lokalen Format formatieren
  • Dim sDatum As String = String.Format("{0:d}", DBRecordset.Fields("Datum").Value)
    
  • Floatwert aus der Datenbank mit richtigem Dezimalpunkt formatieren
  • Dim DecimalSeparator As String = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator
    
    Dim sFloatWert As String = String.Format("{0:f}", DBRecordset.Fields("Power").Value).Replace(DecimalSeparator, ".")
    
  • Ausgabe von Floatwerten über ToString()-Funktion formatieren
  • Dim x As Double = 1.2
    Dim sAusgabe As String = x.ToString("f2") ' float mit 2 Dezimalstellen
    
  • Variablenwerte an spez. Stelle in einem String ausgeben
  • Dim a As Integer = 2
    Dim b As Double = 3.4
    
    ' {0} und {1} geben den Index der nachfolgend übergebenen Variablen a und b an
    MessageBox.Show("Text", String.Format("Wert Integer: {0} und Wert Double: {1}", a.ToString() , b.ToString()))
    

ContextMenuStrip (Popupmenü/Kontextmenü)

  1. Zuweisen eines ContextMenuStrip zu einem übergeordneten Objekt (z.B. TreeView)
    • im Eigenschaftsfenster des übergeordneten Objektes bei Verhalten->ContextMenuStrip den ContextMenuStrip auswählen
    • oder im Code direkt:
    • Me.TreeView1.ContextMenuStrip = Me.ContextMenuStrip1
      
    • in der Regel popt das Contextmenü dann bei Rechtsklick in das übergeordnete Objekte automatisch auf
  2. Anzeigen durch Aufruf im Code:
  3. If e.Button = Windows.Forms.MouseButtons.Right Then
      ContextMenuStrip1.Show()
    End If
    

Eine neue Klasse mit Propertys definieren

Public Class USState
   ' Eigenschaften
   Private myShortName As String
   Private myLongName As String
   
   ' Konstruktor
   Public Sub New(strLongName As String, strShortName As String)
      Me.myShortName = strShortName
      Me.myLongName = strLongName
   End Sub 'New

   ' ReadOnly Property zum auslesen des Kurznamens   
   Public ReadOnly Property ShortName() As String
      Get
         Return myShortName
      End Get
   End Property
   
   ' ReadOnly Property zum auslesen des Langnamens   
   Public ReadOnly Property LongName() As String
      Get
         Return myLongName
      End Get
   End Property
   
   ' überschreiben der bestehenden Funktion ToString()
   Public Overrides Function ToString() As String
      Return Me.ShortName + " - " + Me.LongName
   End Function 'ToString
End Class 'USState

[OleDB] DB-Daten in einem Treeview anzeigen

Public Sub RefreshTree()
    Dim DB_OleDBCommand As New System.Data.OleDb.OleDbCommand
    Dim DB_OleDBReader As System.Data.OleDb.OleDbDataReader

    ' wenn Datenverbindung offen Daten von DB holen
    If frmMain.DB_OleDBConnection.State = System.Data.ConnectionState.Open Then
        With DB_OleDBCommand
            .CommandText = "SELECT ID, Name FROM Users ORDER BY Name"
            .Connection = frmMain.DB_OleDBConnection
            DB_OleDBReader = .ExecuteReader()
        End With

        Dim tnRootNode As TreeNode
        Dim tnObjectNode As TreeNode

        ' TreeView leeren
        tvObjects.Nodes.Clear()

        ' Rootnode anlegen
        tnRootNode = tvObjects.Nodes.Add("Users")

        ' Daten aus DB in TreeView füllen
        Do While (DB_OleDBReader.Read())
            tnObjectNode = tnRootNode.Nodes.Add(DB_OleDBReader.Item("Name").ToString)
            ' ID in das Node-Tag schreiben, für spätere Referenzierung des Datensatzes
            tnObjectNode.Tag = DB_OleDBReader.Item("ID")
        Loop

        ' Verbindung schließen
        DB_OleDBReader.Close()

        ' Obj. löschen
        DB_OleDBCommand.Dispose()
        DB_OleDBCommand = Nothing

        ' Rootnode aufklappen
        tnRootNode.Expand()
    End If
End Sub

Zugriff auf selektierte Node

' allgemein
Dim node As TreeNode = MyTreeView.SelectedNode
  
If node Is Not Nothing Then
   ...
End If

' über MouseClick-Ereignis
Private Sub tvObjects_NodeMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles tvObjects.NodeMouseClick
    Dim s As String = e.Node.Text
End Sub

Allgemeines zur Arbeit mit dem TreeView

  1. Knoten (Nodes) erstellen
  2. Dim tnNode As TreeNode
    
    tnNode = tvObjects.Nodes.Add("NodeName")
    
  3. Unterknoten (SubNodes) erstellen
  4. Dim tnRootNode As TreeNode
    Dim tnObjectNode As TreeNode
    
    tnRootNode = tvObjects.Nodes.Add("RootNode")
    tnObjectNode = tnRootNode.Nodes.Add("SubNode")
    
  5. Zurgiff auf einen Knoten (Node)
  6. Dim tnNode As TreeNode
    
    tnNode = tvObjects.Nodes(0) 'Index der Node im selben Zweig
    
  7. Knoten aufklappen (Node expandieren)
  8. Dim tnRootNode As TreeNode
    Dim tnObjectNode As TreeNode
    
    tnRootNode = tvObjects.Nodes.Add("RootNode")
    tnObjectNode = tnRootNode.Nodes.Add("SubNode")
    
    ' Rootnode aufklappen, damit die untergeordnete Node "SubNode" zu sehen ist
    tnRootNode.Expand()
    
  9. TreeView komplett löschen
  10. tvObjects.Nodes.Clear()
    

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