Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [C#] Drag & Drop problema Click

    Ciao, se qualcuno ha avuto modo di "smanettare" col Drag & Drop in una Windows Form forse può darmi una mano, il problema è questo:
    Cho implementato il drag & drop per oggetti che stanno su una PictureBox e funziona correttamente, l'unico problema è che se clicco semplicemente su un controllo (senza trascinarlo) questo si sposta nella posizione del punto in cui ho cliccato, come è possibile eliminare questo fastidioso comportamento?
    Grazie mille

  2. #2
    Posta il codice che hai scritto finora, o confrontalo con quello di questo esempio che ho scritto tempo fa (http://www.mitalia.net/public/drag_n_drop.zip).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Questo è il mio codice: picturebox1 è il controllo che contiene la pictureBox da spostare (picToMove)

    pictureBox1.AllowDrop = true;
    picToMove.Parent = pictureBox1;

    private void picToMove_MouseDown(object sender, MouseEventArgs e)
    {
    if (e.Button == MouseButtons.Left)
    {
    picToMove.DoDragDrop(picToMove, DragDropEffects.Move);

    }

    private void pictureBox1_DragDrop(object sender, DragEventArgs e)
    {
    picToMove.Location = pictureBox1.PointToClient(new Point(e.X, e.Y));
    }

    private void pictureBox1_DragEnter(object sender, DragEventArgs e)
    {
    e.Effect = DragDropEffects.Move;
    }

    Il codice funziona correttamente, ma come già detto, quando clicco semplicemente sulla picture da spostare (senza trascinarla) essa si sposta nel punto (interno a PicToMove) in cui ho cliccato...

  4. #4
    Devi mettere il codice che è attualmente in mousedown in mousemove, verificando che il pulsante sia premuto (if(e.Button==0) return.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Ho modificato così (eliminando l'evento MoseDown):

    pictureBox1.AllowDrop = true;
    picToMove.Parent = pictureBox1;

    //private void picToMove_MouseDown(object sender, MouseEventArgs e)
    //{

    //}

    private void pictureBox1_DragDrop(object sender, DragEventArgs e)
    {
    picToMove.Location = pictureBox1.PointToClient(new Point(e.X, e.Y));
    }

    private void pictureBox1_DragEnter(object sender, DragEventArgs e)
    {
    e.Effect = DragDropEffects.Move;
    }

    private void picToMove_MouseMove(object sender, MouseEventArgs e)
    {

    if (e.Button == 0) return;
    if (e.Button == MouseButtons.Left)
    {
    ctrlSelected = ShowPicSinistra;
    picToMove.DoDragDrop(picToMove, DragDropEffects.Move);

    }
    }
    ma continua a non funzionare...

  6. #6
    Stesso problema? :master:
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    A dire il vero il problema è un pò diverso... Sembrerebbe fuzionare, quando ci clicco sopra non accade niente e quando trascino si sposta correttamente, però ad esempio se clicco col mouse al di fuori del controllo e poi clicco all'interno del controllo, esso si sposta
    e poi capita che a volte cliccando su controllo esso resta fermo, a volte invece si sposta nel punto cliccato... Insomma sempre che abbia un comportamento stranissimo....

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    158
    dichiara un boolean nello scope della form

    poi lo setti a vero ogni volta che fai mousedown sulla pbox e a falso nel mouse up.

    nel mouse move, prima ancora di vedere se il tasto premuto è quello giusto testi il boolean di cui sopra e se è vero allora esegui il drag.move.
    DISCLAIMER
    quello che sta scritto qui sopra è dettato esclusivamente dall'intuito, non da specifiche conoscenze tecniche. Usate queste informazioni a vostro rischio e pericolo (anhe sui server di produzione

  9. #9
    Ho provato anche questa ma niente... continua a comportarsi in modo strano...

  10. #10
    Metti un link al progetto che ci do un'occhiata...
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.