Question

Ce genre est une question stupide ... Je suis en train de glisser-déposer un picturebox sur un panneau. J'ai suivi quelques exemples, mais il ne fonctionne pas. L'événement DragDrop du panneau est jamais relevé. Je cherchai thi site pour une solution andfound deux sujets plus d'un an, mais leurs solutions ne fonctionne pas. J'ai créé un nouveau projet, avec seulement ce code:

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);
        }
    }

Je mis également l'AllowDrop du panneau et la forme à true. DragOver et MouseDown sont élevés. Aussi, quand je fais glisser la picturebox, le curseur devient une INTERDITS encerclée, comme il était une opération qui n'a pas été autorisée. Est-il possible que le curseur devient l'image dans la zone d'image? Je ne veux pas le picturebox de se déplacer, pour ajouter un élément au panneau.

Était-ce utile?

La solution

Richard, le problème est que le glisser-déposer est pas aussi simple opération que vous avez codé ici. Ici, vous ne lancez pas le mouvement de traînée qui devrait commencer avec le code et vous pouvez en lire davantage ici ... http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop (v = VS.90) .aspx

Si vous voulez juste déplacer le PictureBox ... glisser à l'intérieur picturebox WinForm sur l'exécution

Et enfin glisser-déposer entre les instances de la même application Windows Forms

Hope this helps.

Autres conseils

Le problème est facile à résoudre.

Vous devez simplement mettre en DragEnter appropriée Effet:

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

Après cet événement DragDrop est tiré correctement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top