Il trascinamento + rilascio è nascosto sul controllo PictureBox. Non so perché, funziona bene. La guida probabile qui è che non sarà ovvio all'utente che potresti rilasciare un'immagine sul controllo. Dovrai fare qualcosa al riguardo, almeno impostare la proprietà BackColor su un valore non predefinito in modo che l'utente possa vederlo.
Anyhoo, avrete bisogno di implementare l'evento MouseDown sul primo picturebox modo è possibile fare clic e iniziare a trascinare:
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) {
var img = pictureBox1.Image;
if (img == null) return;
if (DoDragDrop(img, DragDropEffects.Move) == DragDropEffects.Move) {
pictureBox1.Image = null;
}
}
ho pensato che si voleva spostare l'immagine, modificare, se necessario, se la copia è stata previsto. Quindi dovrai implementare gli eventi DragEnter e DragDrop sulla seconda picturebox. Poiché le proprietà sono nascoste, devi impostarle nel costruttore del modulo. In questo modo:
public Form1() {
InitializeComponent();
pictureBox1.MouseDown += pictureBox1_MouseDown;
pictureBox2.AllowDrop = true;
pictureBox2.DragEnter += pictureBox2_DragEnter;
pictureBox2.DragDrop += pictureBox2_DragDrop;
}
void pictureBox2_DragEnter(object sender, DragEventArgs e) {
if (e.Data.GetDataPresent(DataFormats.Bitmap))
e.Effect = DragDropEffects.Move;
}
void pictureBox2_DragDrop(object sender, DragEventArgs e) {
var bmp = (Bitmap)e.Data.GetData(DataFormats.Bitmap);
pictureBox2.Image = bmp;
}
Ciò consente di trascinare un'immagine da un'altra applicazione nella casella. Chiamiamolo una caratteristica. Utilizzare un flag bool se si desidera disabilitare questo.
fonte
2013-04-14 23:35:11
Possibile duplicato di: http://stackoverflow.com/questions/1935925/drag-drop-of-a-dinamically-created-shortcut?rq=1 –