Frage

Dies ist eine Art einer dummen Frage ... Ich bin zu ziehen versucht und eine picturebox auf eine Platte fallen. Ich folgte einige exemples, aber es funktioniert nicht. Das Dragdrop-Ereignis des Panels wird nie ausgelöst. Ich suchte thi Stelle für eine Lösung andfound zwei Themen über ein Jahr alt, aber ihre Lösungen funktionieren nicht. Ich habe ein neues Projekt, mit nur diesem 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);
        }
    }

Ich habe auch die AllowDrop der Platte und die Form zu wahren. Dragover und MouseDown- angehoben. Auch wenn ich die picturebox ziehen, werden Sie den Cursor ein eingekreist Barred, wie es eine Operation war, die nicht erlaubt war. Gibt es eine Möglichkeit, dass der Cursor das Bild im Bildfeld wird? Ich will nicht die picturebox zu bewegen, nur ein Element an der Platte hinzuzufügen.

War es hilfreich?

Lösung

Richard, ist das Problem, dass Drag & Drop ist nicht so einfach, den Betrieb, wie Sie hier codiert haben. Hier haben Sie nicht die Schleppbewegung gestartet, die mit dem Code beginnen sollte und Sie können mehr darüber lesen Sie hier ... http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop (v = VS.90) aspx

Wenn Sie wollen einfach nur die PictureBox ... ziehen picturebox innen winform zur Laufzeit bewegen

Und schließlich Drag and Drop zwischen Instanzen die gleichen Windows Forms-Anwendung

Hope, das hilft.

Andere Tipps

Das Problem ist leicht zu lösen.

Sie müssen nur eingestellt in Dragenter entsprechenden Effekt:

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

Danach Dragdrop-Ereignis korrekt gebrannt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top