MouseDown und Up feuern beide bereits bei MouseDown
-
Hi,
ich habe eine ListView mit einer eigenen Paint-Funktion ausgestattet und möchte nun Mausklicks auf die Zeichenfläche verarbeiten.
Dazu habe ich bei der ListView die MouseHandler (Down/Move/Up) registriert.Wenn ich jetzt die Linke MT drücke, feuern aber sofort beide Funktionen, beim Loslassen geschieht nichts mehr.
Hat irgendwer ne Idee woran das liegen könnte?
-
Kannste ma Zeigen wo und wie du die EventHandler registriert hast?
-
Eventhandler habe ich über die GUI erstellt.
private void listView1_MouseDown(object sender, MouseEventArgs e)
Habe da aber gerade was entdeckt:
In der MouseDown-Routine ändere ich etwas an der Listview und führelistView1.Invalidate()
aus um einen Repaint-Auszulösen.
Die führt dann vermutlich doch auch zum 'Erledigen' aller Mouse-Events.
Kann ich den Repaint auch anders erledigen?
-
Komme mir vor wie ein Detektiv, wollte gerade mal ein Minimalbeispiel machen, dabei ist folgendes herausgekommen.
Wenn ich meine eigenen Routinen herausnehme und in den Mouse-Handlern KEIN Invalidate/Refresh ausführe, kommt es dennoch zu dem Verhalten.http://nippey.dornuweb.de/files/MouseUpMist.png
[Den roten Rahmen habe ich in Paint gemalt]Innerhalb des Rahmens kommt der MouseUp erst bei Loslassen der Taste, ausserhalb kommt das MouseUp zusammen mit dem MouseDown-Event.
EDIT: Also sobald ich mit meinem Klick nicht mehr auf dem Text binWoher kommt dieses Verhalten?
Irgendwer ne Ahnung?
-
Auf FullRowSelect umgestellt.
Nicht ganz zufrieden, aber geht.Danke fürs zuhören
-
Sehe ich es richtig, dass du eigentlich nur in den jeweiligen Feldern von der "Spalte SignalData" was reinzeichnen möchtest?
Dann: http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.ownerdraw.aspxFalls du eher alles übermalen möchtest:
Transparentes Steuerelement drüberlegen und darauf zeichnen.
-
Ownerdraw nutze ich bereits.
Das mit dem Überlagern klingt aber auch ganz gut, würde mir eventuell einiges ersparen