我正在做一个drapandrop,它的工作很好。但是每当我尝试将图像拖动到已经包含图像的图片时,我希望它给出一条消息,这将无效......当我点击图像并将其拖动到它所来自的同一图片框时(如我点击picturebox1并将其放在picturebox1上它只是空白),它只是消失了.public partial class Form1:Form
public Form1()
{
InitializeComponent();
pictureBox1.AllowDrop = true;
pictureBox2.AllowDrop = true;
pictureBox3.AllowDrop = true;
pictureBox4.AllowDrop = true;
pictureBox5.AllowDrop = true;
pictureBox6.AllowDrop = true;
}
void pictureBox_MouseDown(object sender, MouseEventArgs e)
{
DoDragDrop(sender, DragDropEffects.Move);
}
void pictureBox_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
void pictureBox_DragDrop(object sender, DragEventArgs e)
{
PictureBox pb = e.Data.GetData(typeof(PictureBox)) as PictureBox;
if (pb.Image != null)
{
((PictureBox)sender).Image = pb.Image;
pb.Image = null;
}
else
{
MessageBox.Show("The picturebox already contains an image.");
}
}
}
}
答案 0 :(得分:0)
pb
是对正在拖动的PictureBox的引用。由于您正在拖动您正在拖动的同一个PictureBox,pb
和senrder
都引用相同的PictureBox,因此pb.Image = null;
代码行正在清除PictureBox中的图像。你需要在条件中添加一个pb与发送者不同的检查,如下所示:
if (pb.Image != null && !pb.Equals(sender))
基本上,您应该使用DragEnter事件。如果PictureBox已包含图像,则可以将e.Effect设置为DragDropEffects.None。这也将为您首先描述的问题提供更好的解决方案。