有时候我们需要拖拽图片到图片控件直接显示,发现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 还要谢谢楼主啊,我是好久之前遇到这个情况了,当时没查出来,今天你这么一提查出来了,长了点知识,多谢多谢!