Tipp 0173 Bereiche im Steuerelement abfragen
Autor/Einsender:
Datum:
  Thomas Becker
08.12.2007
Entwicklungsumgebung:   VB.Net 2005
Framework:   2.0
Mitunter steht man vor der Aufgabe, bestimmte Bereiche in einem Steuerelement ereignisgesteuert zu erhalten. Die schlechtere Lösung ist es, hierfür mehrere ToolBox-Steuerelemente zu verwenden, um unterschiedliche Regionen auswerten zu können. Dieser Tipp zeigt, wie es mit nur einem einzigen Steuerelement geht.
Die Contains-Eigenschaft der RectangleF ermöglicht die Abfrage, ob sich die Maus innerhalb der Koordinate befindet. Dazu ist keine Visualisierung nötig, man kann diese Bereiche auch ohne das Paint-Ereignis unsichtbar nutzen. Daher ist die visuelle Begrenzung im Tipp auch abschaltbar.
 
Public Class Form1
  Dim rectRechteck As New Rectangle(20, 30, 70, 70)
  Dim rectfKreis As New RectangleF(105, 40, 50, 50)
  Dim rectfEllipse As New RectangleF(170, 40, 80, 50)

  Private Sub Form1_MouseMove(ByVal sender As Object, _
       ByVal e As System.Windows.Forms.MouseEventArgs) Handles _
       Me.MouseMove
    Dim i As Boolean = False
     'Alle Bereiche (Rect-Variablen) auf Mausposition testen
    If rectRechteck.Contains(e.Location) Then
      Me.Text = "Rechteck"
      i = True
    End If
    If rectfKreis.Contains(e.Location) Then
      Me.Text = "Kreis"
      i = True
    End If
    If rectfEllipse.Contains(e.Location) Then
      Me.Text = "Ellipse"
      i = True
    End If
    If i = False Then Me.Text = ""
  End Sub

  Private Sub Form1_Paint(ByVal sender As Object, ByVal e As _
       System.Windows.Forms.PaintEventArgs) Handles Me.Paint
     'Kein Paintereignis bei Stellung "Ohne Grafik"
    If Button1.Text = "Ohne Grafik" Then Exit Sub
      'Ansonsten Zeichnen der Formen
      Dim g As Graphics = e.Graphics
      Dim mypen As New Pen(Color.Black, 1)

      g.DrawRectangle(mypen, rectRechteck)
      g.DrawEllipse(mypen, rectfKreis)
      g.DrawEllipse(mypen, rectfEllipse)
  End Sub

  Private Sub Button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles Button1.Click
    If Button1.Text = "Mit Grafik" Then
      Button1.Text = "Ohne Grafik"
      Label1.Text = "Bewege die Maus über die Bereiche"
    Else
      Button1.Text = "Mit Grafik"
      Label1.Text = "Bewege die Maus über die Formen"
    End If
    Me.Refresh()
  End Sub

  Private Sub Form1_MouseLeave(ByVal sender As Object, ByVal e As _
      System.EventArgs) Handles Me.MouseLeave
    Me.Text = "Bereich abfragen"
  End Sub
End Class
 
Weitere Links zum Thema
BorderStyle-Eigenschaft von Steuerelementen erweitern
Dynamische Anpassung der Steuerelemente

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


Download  (17,3 kB) Downloads bisher: [ 178 ]

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: Samstag, 31. Dezember 2011