Domanda

Questa è una specie di una domanda stupida ... Sto cercando di trascinare e rilasciare un controllo PictureBox su un pannello. Ho seguito alcuni esempi, ma non funziona. L'evento DragDrop del pannello è mai sollevata. Ho cercato thi sito per una soluzione andfound due temi più di un anno, ma le loro soluzioni non ha funzionato. Ho creato un nuovo progetto, con solo questo codice:

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            pictureBox1.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
            panel1.DragDrop +=new DragEventHandler(panel1_DragDrop);
            panel1.DragOver +=new DragEventHandler(panel1_DragOver);
        }

        private void panel1_DragOver(object sender, DragEventArgs e)
        {
            Console.WriteLine("DragOver");
        }

        private void panel1_DragDrop(object sender, DragEventArgs e)
        {
            Console.WriteLine("DragDrop");
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            Console.WriteLine("Mouse");
            pictureBox1.DoDragDrop(pictureBox1.Text, DragDropEffects.All);
        }
    }

Ho anche impostare l'AllowDrop del pannello e il modulo per vere. DragOver e MouseDown sono sollevate. Inoltre, quando ho trascinare il picturebox, il cursore diventi un Barred cerchiato, come se fosse un'operazione che non era permesso. C'è un modo che il cursore diventa l'immagine nella casella di immagine? Non voglio il picturebox di muoversi, solo per aggiungere un elemento al pannello.

È stato utile?

Soluzione

Richard, il problema è che il drag and drop non è così semplice operazione come avete codificato qui. Qui non si è iniziato il movimento di resistenza che dovrebbe iniziare con il codice e si può leggere di più qui ... http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop (v = VS.90) aspx

Se si desidera solo per spostare la PictureBox ... picturebox trascinando all'interno winform sul runtime

E infine and Drop tra le istanze delle stesse forme applicazione Windows

Spero che questo aiuti.

Altri suggerimenti

Il problema è di facile soluzione.

Si deve solo impostare in DragEnter appropriata Effetto:

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

Dopo tale evento DragDrop è sparato in modo corretto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top