C#中PictureBox没有AllowDrop属性怎么办

有时候我们需要拖拽图片到图片控件直接显示,发现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

还要谢谢楼主啊,我是好久之前遇到这个情况了,当时没查出来,今天你这么一提查出来了,长了点知识,多谢多谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农张三疯

你的打赏是我写文章最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值