![]() |
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
|
|
|
|
|
Windows-Version |
98/SE |
 |
|
ME |
 |
|
NT |
 |
|
2000 |
 |
|
XP |
 |
|
Vista |
 |
|
Win
7 |
 |
|
|
|
Download (17,3
kB)
|
Downloads bisher: [ 189 ]
|
|
|