Grafik drehen

' gr ... Grafik, die gedreht werden soll
' cx, cy ... Koordinaten
' angle ... Drehwinkel
Private Sub RotateAt(ByVal gr As Graphics, ByVal cx As Integer, ByVal cy As Integer, ByVal angle As Single)
    gr.ResetTransform()
    gr.TranslateTransform(-cx, -cy, Drawing2D.MatrixOrder.Append)
    gr.RotateTransform(angle, Drawing2D.MatrixOrder.Append)
    gr.TranslateTransform(cx, cy, Drawing2D.MatrixOrder.Append)
End Sub

[OleDB] Combobox mit Key/Value Paaren aus einer Datenbank füllen

Dim DB_OleDBCommand As New System.Data.OleDb.OleDbCommand
Dim DB_OleDBDataAdapter As New System.Data.OleDb.OleDbDataAdapter
Dim dsFuel As New DataSet

DB_OleDBCommand.Connection = frmMain.DB_OleDBConnection

dsFuel.Clear()
DB_OleDBCommand.CommandText = "SELECT ID, Name FROM Users ORDER BY Name"

DB_OleDBDataAdapter.SelectCommand = DB_OleDBCommand
DB_OleDBDataAdapter.Fill(dsFuel)

With cbFuel
    .Items.Clear()
    .DataSource = dsFuel.Tables(0)
    .DisplayMember = "Name"
    .ValueMember = "ID"
End With

' Key/Value Paare auslesen/setzen

Dim Key As String = cbFuel.SelectedValue.ToString() ' auslesen
cbFuel.SelectedValue = 10 ' setzen

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