PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Form2 on mousemove anzeigen. Visual Basic 2010


Geldmann3
2011-12-30, 17:22:52
Hallo, habe hier ein kleines Problem.

Folgender Code funktioniert

Private Sub Element_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Element.MouseMove

MsgBox("Test")
Form2.Show()

End Sub

Nehme ich die MsgBox allerdings raus.
Private Sub Element_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Element.MouseMove

Form2.Show()

End Sub

Bekomme ich eine Fehlermeldung.
Fehler: Das Formular hat während der Erstellung ausgehend von einer Standardinstanz auf sich selbst verwiesen. Dies führte zu einer Endlosschleife. Verweisen Sie im Konstruktor des Formulars mithilfe von "Me" auf das Formular.
???
Why?
(Was ist das denn für eine Fehlermeldung? Das Formular verweist doch gar nicht auf sich selbst, oder habe ich etwas übersehen?)


Folgendes geht auch
Private Sub Element_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Element.Click

Form2.Show()

End Sub

Warum nicht mit Mousemove ?

Passiert es dann etwa immer wieder in einer Endlosschleife?
Wie kann ich das am besten zum funktionieren bekommen?

Edit:
Habe nun versucht die Endlosschleife so zu präventieren.
Public Brake As Boolean
(...)
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Brake = True
End Sub
(...)

Private Sub Element_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Element.MouseMove

If Brake = True Then
Form2.Show()
Brake = False
End If

End Sub
(...)


Ohne Erfolg, gleiche Fehlermeldung. Obwohl es ja nur noch ausgeführt werden sollte, wenn Brake wahr ist. Was Brake ja erst wieder ist nachdem der Timer getickt hat, dies geschieht nur alle 2 Sekunden... Es sollte also nicht zu einer Endlosschleife kommen. Wo liegt das Problem?

Elemental
2011-12-30, 18:25:03
Von welchem Control kommt denn der MouseMove event? Form1?

Geldmann3
2011-12-30, 18:58:23
Nein, eine PictureBox auf Form1.

Habe etwas anderes entdeckt, ohne dass ich den Code ändere funktioniert es manchmal und manchmal nicht. Eben hat es bei 10 Versuche 2x funktioniert.
Hääää?

Habs jetzt einfach wie-folgt gelöst
On Error Resume Next
Form2.Show()
Obwohl ich noch nicht ganz verstehe, woher der Error kommt.
Vielleicht, wird Move resultierend aus der Mausbewegung immer wieder aufgerufen und das als Endlosschlaufe interpretiert.

patermatrix
2012-01-07, 16:46:36
Habs jetzt einfach wie-folgt gelöst

Ganz schlechter Stil. Wie auch die Variablennamen Form1 etc.


Obwohl ich noch nicht ganz verstehe, woher der Error kommt.

Ohne den kompletten Code kann dir das niemand sagen.

btw.
Sag besser, was du machen willst. Eine einmalige Aktion (z.B. ein Fenster anzeigen) verträgt sich von Natur aus schlecht mit einem möglicherweise x Mal pro Sekunde geworfenen Event (z.B. MouseMove).