Hey,
ich habe folgendes Problem und hoffe, dass mir hier jemand weiterhelfen kann.
Ich habe ein UserControl welches aus einer PictureBox und einem Lable besteht. Es funktioniert wunderbar, nur bei Events macht es Probleme.
Das Programm erstellt zur Laufzeit eine Anzahl dieser UserControls äquivalent zur Anzahl an Einträgen in einer Datenbank. Funktioniert gut soweit.
Jetzt soll diesen UserControls eine Art Drag&Drop ermöglicht werden. Mit AddHandler weise ich den UserControls folgende Events zu:
Leider funktioniert das ganze so nicht. Es tut sich überhaupt nichts. Wenn ich aber selbiges mit einer normalen PictureBox(selbe Bedingungen) versuche, funktioniert es reibungslos. Wo liegt hier mein Fehler?
Im UserControl selbst habe ich folgendes schon ausprobiert:
Wenn ich das Event allerdings auslöse, bekomme ich immer diese Fehlermeldung:
"Ein Ausnahmefehler des Typs "System.InvalidCastException" ist in anwendung.exe aufgetreten.
Zusätzliche Informationen: Das Objekt des Typs "System.EventArgs" kann nicht in Typ "System.Windows.Forms.MouseEventArgs" umgewandelt werden."
Wie bekomme ich es denn hin, dass mein Event mit dem "PictureLable" so funktioniert, wie es mit der normalen PictureBox auch klappt?
Vielen Dank im Voraus.
xDkpMan
ich habe folgendes Problem und hoffe, dass mir hier jemand weiterhelfen kann.
Ich habe ein UserControl welches aus einer PictureBox und einem Lable besteht. Es funktioniert wunderbar, nur bei Events macht es Probleme.
Das Programm erstellt zur Laufzeit eine Anzahl dieser UserControls äquivalent zur Anzahl an Einträgen in einer Datenbank. Funktioniert gut soweit.
Jetzt soll diesen UserControls eine Art Drag&Drop ermöglicht werden. Mit AddHandler weise ich den UserControls folgende Events zu:
VB.NET-Quellcode
- Private isTracking As Boolean
- Private ex, ey As Integer
- Private Sub PictureLable_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
- isTracking = True
- ex = e.X 'x-Koordinate der Maus von der linken oberen Ecke der PictureBox gemessen
- ey = e.Y 'y-Koordinate der Maus von der linken oberen Ecke der PictureBox gemessen
- End Sub
- Private Sub PictureLable_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
- If (isTracking = True) And (e.Button = MouseButtons.Left) Then
- Dim px As Integer = Control.MousePosition.X - ex
- Dim py As Integer = Control.MousePosition.Y - ey
- Dim p As Point = New Point(px, py)
- sender.Location = New Point(TabPage2.PointToClient(p))
- End If
- End Sub
- Private Sub PictureLable_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
- isTracking = False
- End Sub
Leider funktioniert das ganze so nicht. Es tut sich überhaupt nichts. Wenn ich aber selbiges mit einer normalen PictureBox(selbe Bedingungen) versuche, funktioniert es reibungslos. Wo liegt hier mein Fehler?
Im UserControl selbst habe ich folgendes schon ausprobiert:
VB.NET-Quellcode
- Private Sub PictureLable1_MouseDown(ByVal sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown, Label1.MouseDown
- Me.OnMouseDown(MouseEventArgs.Empty)
- End Sub
- Private Sub PictureLable1_MouseMove(ByVal sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove, Label1.MouseMove
- Me.OnMouseMove(MouseEventArgs.Empty)
- End Sub
- Private Sub PictureLable1_MouseUp(ByVal sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp, Label1.MouseUp
- Me.OnMouseUp(MouseEventArgs.Empty)
- End Sub
Wenn ich das Event allerdings auslöse, bekomme ich immer diese Fehlermeldung:
"Ein Ausnahmefehler des Typs "System.InvalidCastException" ist in anwendung.exe aufgetreten.
Zusätzliche Informationen: Das Objekt des Typs "System.EventArgs" kann nicht in Typ "System.Windows.Forms.MouseEventArgs" umgewandelt werden."
Wie bekomme ich es denn hin, dass mein Event mit dem "PictureLable" so funktioniert, wie es mit der normalen PictureBox auch klappt?
Vielen Dank im Voraus.
xDkpMan