Er det mulig at Dra og slipp hendelser i WPF ikke skyte pålitelig?

stemmer
-1

Jeg lurer på om D & D hendelser ikke alltid avfyring (DragLeave / DragEnter).

Jeg implementert en D & D-funksjonen i min WPF GUI. Mens du drar noen innslag rundt jeg dragleave 'en GUI-elementet. Normalt branner en passende 'DragLeave' hendelse, men ikke alltid. Jeg frykter at for noen farts grunner noen ganger disse hendelsene får ikke sparken pålitelig. Hvis det er tilfelle, hvordan kan jeg overvinne disse problemet?

Publisert på 09/10/2019 klokken 13:00
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Kort versjon: Jeg skrev noen eksempler app for å sjekke det selv - og ja - den DragLeave hendelsen er ikke sparken pålitelig.

Lang versjon:

Hva jeg gjorde:

Jeg plassert en Labelsom en flyttbar gjenstand inne i en StackPanel. Deretter implementert jeg koden for MouseMoveog DragLeavearrangementer. En ekstra TextBlock- lagt til StackPanelså vel - servert som hendelse utgang. Hvis DragLeaveføreren blir kalt, endret jeg Text Propertytil TextBlockå ' DragLeave oppstod '. Etterpå jeg testet det å dra Labelmot StackPanel.

Hva jeg kjente:

Hvis jeg var rask nok eller trykket på museknappen nær grensen til Labelden DragLeaveble arrangementet ikke sparken. Hvis jeg gjorde det sakte , alt fungerte fint som forventet.

Det jeg konkludere:

Jeg antar, om musen forlater Labelfør ' DoDragDrop' tråden er igangsatt, blir hendelsen ikke sparken, siden musen er allerede utenfor Label. Så det er en liten feil mellom start av D & D og avfyring av den første hendelsen.

Man kan se det samme oppførsel i DragOver/MouseMovebehandleren. Jo raskere du beveger musen, færre poeng (e.GetPosition (...)) du kan fange i hendelsesbehandling.

Problemet er at for DragLeaveat manglende hendelse kan være kritisk, siden det bare er avfyrt en gang. Men DragOverer tilfelle sparken veldig ofte i løpet av en dra og en manglende arrangement kan balanseres ved neste DragOverarrangement direkte etterpå.

Svarte 10/10/2019 kl. 14:51
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more