the above code pasted can only drag the button but not into the picturebox. pls help.

hi, 
i need to drag a button into a picturebox and when the button is dragged inside the picturebox, i want it to be able to move around also. 

but my code i did only allow me to drag the button but not into the picturebox. 




my code: 

  private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
           

            Panel source = (Panel)sender;
            DoDragDrop(source.BackgroundImage, DragDropEffects.Copy);

           
        }

  private void pictureBox1_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(typeof(Bitmap)))
            {
                e.Effect = DragDropEffects.Copy;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }

        }

private void pictureBox1_DragDrop(object sender, DragEventArgs e)
        {
            
            Panel destination = (Panel)sender;
            destination.BackgroundImage = (Bitmap)e.Data.GetData(typeof(Bitmap));
} 






need help. thank you (:

sorry, had tried all the ones u given. but it does not allow me to drop it into a picturebox and continue to drag it further inside the picturebox.

You can't drop a button in a picturebox. Read my post #3 - Drag & drop allows you to move data. In fact you are trying to move button control from one point of form to another point of form.

If you want to move the button around, use the mousedown and mouse up events to capture the start and end point of the mouse drag and alter the buttons location property according to the direction and distance the mouse moves

Control last;
Point lastp;

private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
     ((Control)sender).Cursor = System.Windows.Forms.Cursors.NoMove2D;
}

private void textBox1_MouseUp(object sender, MouseEventArgs e)
{

            last = (Control)sender;
            lastp = new Point(last.Location.X + e.Location.X, last.Location.Y + e.Location.Y);
}

private void panel1_MouseMove(object sender, MouseEventArgs e)
{
            Panel p = ((Panel)sender);
            bool viz = (lastp.X >= p.Location.X + e.Location.X - 1) && (lastp.X <= p.Location.X + e.Location.X + 1);
            bool fug = (lastp.Y >= p.Location.Y + e.Location.Y - 1) && (lastp.Y <= p.Location.Y + e.Location.Y + 1);
            if (last != null && lastp != null && viz && fug )
            { 
                p.Controls.Add(last);
                last.Location = new Point(30, 30);

                p.Refresh();
            }  
}
This question has already been answered. Start a new discussion instead.