webForumDet fria alternativet

drag and drop och dubbelklick

.NET

7 svar · 292 visningar · startad av Mc Fetto

Medlem sedan nov. 20022 355 inlägg
Frågan#1

Halloj, jag har 2 stycken listviews som jag kan dra objekt till och från varandra. Problemet är att jag vill även kunna dubbelklicka i en listview och då ska det hända andra saker. Så här ser det ut:

Jag har kopplat ett par event till listview1:
Mouse_Down : sätter en flagga till true (down)
Mouse_Move : Kollar flaggan, om ej true return direkt, annars dra med värde.
DragDrop återställervärdena.

Detta fungerar bra, men att koppla till så det händer saker när jag dubbelklickar verkar helt omöjligt. Jag har provat att använda en flagga till som sätts vid mouseup och som kollas i mousemove innan ngt annat. Men det fungerar inte nått vidare... ideér??
Edit: kastar med lite kod:

        private void lVClient_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        { 
            lVClient_mdown = true;
        }

        private void lVClient_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if ( ! lVClient_mdown ) 
                return ;
            if ( e.Button == MouseButtons.Right ) 
                return ;
        
            string str = GetItemText(lVClient) ;
            if ( str == "" ) return ;
            		
            lVClient.DoDragDrop(str , DragDropEffects.Copy | DragDropEffects.Move ) ;

        }
Medlem sedan nov. 20022 355 inlägg
#2

Hm, ingen som kan hjälpa en på vägen+ :(

Medlem sedan feb. 20002 300 inlägg
#3

Borde väl finnas ett DblClick-event eller så?

Medlem sedan nov. 20022 355 inlägg
#4

Phorpher skrev:

Borde väl finnas ett DblClick-event eller så?

Jo, det finns där, problemet är att den når alldrig dit. Har testat att skriva ut i output men inget händer... tar jag bort koden från mousemove så fungerar doubleclick.

Medlem sedan maj 20021 466 inlägg
#5

Kolla vad det finns för spännande i e (MouseEventArgs). Del finns Button för att se vilken knapp som är nedtryckt (ingen flagga behövs!) och dels finns Clicks för att kolla om ett dubbelklick har inträffat. Då är Clicks 2. Dessa argument finns i alla mushändelser.

Medlem sedan nov. 20022 355 inlägg
#6

Jo men det är väl så att även om det är ett dubbelklick (2) så föregår väl det alltid av ett enkel klick? Ivf enligt mina utskrifter :(. Hur ska jag hantera detta då?

Medlem sedan maj 20021 466 inlägg
#7

Det gör ingenting eftersom endast markering ska inträffa vid enkelklick. Din dra och släppoperation ska du vänta med tills musen har flyttats utanför dragområdet - SystemInformation.DragSize.

Medlem sedan nov. 20022 355 inlägg
#8

Tackar, löste det med hjälp av att kolla clicks i mouseDown metoden. :)

281 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
143 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
144 ms — ändringar (db)