Tipp 0158 Steuerelemente verschieben
Autor/Einsender:
Datum:
  Horst Düvel
28.02.2007
Entwicklungsumgebung:   VB.Net 2005
Framework:   2.0
Eine einfache Methode, um mehrere Steuerelemente zur Laufzeit zu verschieben ist, diese als Steuerelementfeld mit einem Control-Array zu instanzieren und über Handler mit den Ereignissen MouseDown, MouseMove und Click mit Prozeduren zu verbinden, die die x/y-Lokalisation der Maus beim MouseDown aufnehmen, um so beim Ereignis MouseMove die Verschiebung des Controls durchzuführen.
 
Public Class Form1
  Private p As Point
  Protected EquipmentSelections() As Button

  Private Sub Form1_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load

    EquipmentSelections = _
          New Button() {Button1, Button2, Button3, Button4}
    For Each Button As Button In EquipmentSelections
      AddHandler Button.MouseDown, AddressOf Koordinaten
      AddHandler Button.MouseMove, AddressOf Bewegung
      AddHandler Button.Click, AddressOf Button_Click
    Next
  End Sub

  Private Sub Bewegung(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.MouseEventArgs)
    For Each Button As Button In EquipmentSelections
      If e.Button = Windows.Forms.MouseButtons.Left Then
        If Button Is sender Then
          Button.Location = _
                New Point(Button.Location.X + e.X - p.X, _
                Button.Location.Y + e.Y - p.Y)
        End If
      End If
    Next
  End Sub

  Private Sub Koordinaten(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.MouseEventArgs)
    p.X = e.X
    p.Y = e.Y
  End Sub

  Private Sub Button_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs)
    If sender.name = "Button4" Then
      If MessageBox.Show("Beenden?", "Beenden", _
            MessageBoxButtons.YesNo, _
            MessageBoxIcon.Question) = _
            Windows.Forms.DialogResult.Yes Then
        Me.Close()
      Else
        MessageBox.Show(sender.name, sender.name, _
            MessageBoxButtons.OK, MessageBoxIcon.Information)
      End If
    Else
      MessageBox.Show(sender.name, sender.name, _
          MessageBoxButtons.OK, MessageBoxIcon.Information)
    End If
  End Sub
End Class
 
Weitere Links zum Thema
Alle Steuerelemente eines Formulars ermitteln
Dynamische Anpassung der Steuerelemente

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (18,1 kB) Downloads bisher: [ 366 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Freitag, 20. Januar 2012