有时候我们需要拖拽图片到图片控件直接显示,发现PictureBox没有显示AllowDrop属性,而且使用picturebox1也点不出来。其实这个控件是有这个属性的,直接写出来而不能点出来。看下面经典对话
private void pictureBox1_DragOver(object sender, DragEventArgs e)
{
if ((e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link)
{
e.Effect = DragDropEffects.Link;
}
}
private void pictureBox1_DragDrop(object sender, DragEventArgs e)
{
string[] items = (object)e.Data.GetData("FileNameW") as string[];
if (items.Length == 1)
{
System.Drawing.Image img = System.Drawing.Image.FromFile(items[0]);
this.pictureBox1.Image = img;
}
}
在窗体构造函数或者是Load事件里写下面三行
this.pictureBox1.DragOver+=new DragEventHandler(pictureBox1_DragOver);
this.pictureBox1.DragDrop+=new DragEventHandler(pictureBox1_DragDrop);
this.pictureBox1.AllowDrop = true;
代码已经经过测试,没有问题
PictureBox的AllowDrop属性确实感知不出来,但是PictureBox类中含有对这个属性的定义,你可以Go To Definition看一下
你这样写是不会出问题的,因为这个属性在定义的地方加了两个Attribute:
// Summary:
// Overrides the System.Windows.Forms.Control.AllowDrop property.
[EditorBrowsable(1)]
[Browsable(false)]
public override bool AllowDrop { get; set; }
它们规定这个属性是否可见,详情可以查询MSDN
还要谢谢楼主啊,我是好久之前遇到这个情况了,当时没查出来,今天你这么一提查出来了,长了点知识,多谢多谢!