Pregunta

Esta es la clase de pregunta estúpida ... estoy tratando de arrastrar y soltar un cuadro de imagen en un panel. He seguido algún ejemplo, pero no funciona. El evento DragDrop del panel no se eleva. Busqué Thi sitio para una solución andfound dos temas más de un año de edad, pero sus soluciones no funcionó. He creado un nuevo proyecto, con solamente este código:

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

I también estableció la AllowDrop del panel y la forma en true. DragOver y MouseDown se levantan. Además, cuando yo arrastrar el cuadro de imagen, el cursor se convierta en un Barred en círculo, como si fuera una operación que no estaba permitido. ¿Hay alguna manera de que el cursor se convierte en la imagen en el cuadro de imagen? Yo no quiero que el cuadro de imagen se mueva, sólo para añadir un elemento al panel.

¿Fue útil?

Solución

Richard, el problema es que arrastrar y soltar operación no es tan simple como usted ha codificado aquí. Aquí usted no ha comenzado el movimiento de arrastre que debe comenzar con código y se puede leer más sobre esto aquí ... http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop (v = VS.90) .aspx

Si lo que desea es mover el cuadro de imagen arrastrando PictureBox ... dentro WinForm en tiempo de ejecución

Y, por último entre instancias de las mismas formas de aplicación para Windows

Espero que esto ayude.

Otros consejos

El problema es fácil de resolver.

Sólo debe establecer en DragEnter apropiada Efecto:

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

Después de ese evento DragDrop se dispara correctamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top