privatevoidpictureBox1_DragOver(objectsender,DragEventArgse)
{
if((e.AllowedEffect&DragDropEffects.Link)==DragDropEffects.Link)
{
e.Effect=DragDropEffects.Link;
}
}
privatevoidpictureBox1_DragDrop(objectsender,DragEventArgse)
{
string[]items=(object)e.Data.GetData("FileNameW")asstring[];
if(items.Length==1)
{
System.Drawing.Imageimg=System.Drawing.Image.FromFile(items[0]);
this.pictureBox1.Image=img;
}
}
在窗体构造函数或者是Load事件里写下面三行
this.pictureBox1.DragOver+=newDragEventHandler(pictureBox1_DragOver);
this.pictureBox1.DragDrop+=newDragEventHandler(pictureBox1_DragDrop);
this.pictureBox1.AllowDrop=true;
代码已经经过测试,没有问题
PictureBox的AllowDrop属性确实感知不出来,但是PictureBox类中含有对这个属性的定义,你可以GoToDefinition看一下
你这样写是不会出问题的,因为这个属性在定义的地方加了两个Attribute:
//Summary:
//OverridestheSystem.Windows.Forms.Control.AllowDropproperty.
[EditorBrowsable(1)]
[Browsable(false)]
publicoverrideboolAllowDrop{get;set;}
它们规定这个属性是否可见,详情可以查询MSDN
还要谢谢楼主啊,我是好久之前遇到这个情况了,当时没查出来,今天你这么一提查出来了,长了点知识,多谢多谢!
----------------------------------------------
你是想做个画图板了....
voidpictureBox1_MouseUp(objectsender,MouseEventArgse)
{
if(e.Button==MouseButtons.Left)
{
p2=newPoint(e.X,e.Y);
Rectanglerec=newRectangle();
Graphicsg1=this.pictureBox1.CreateGraphics();
g1.DrawRectangle(newPen(Brushes.Black),newRectangle(p1,newSize(p2.X-p1.X,p2.Y-p1.Y)));
}
}
voidpictureBox1_MouseDown(objectsender,MouseEventArgse)
{
if(e.Button==MouseButtons.Left)
{
p1=newPoint(e.X,e.Y);
}
}
p1,p2是两个Point类型的类成员,这个无所谓,你声明一个Rectangle的也可以。
怎么注册事件就不用我教了吧。
这个是画方形,其他图形也可以画,那就是需要设置一个标志位,记录鼠标当前状态,然后画的时候判断和计算就可以了。具体代码我不写了
yloverong:thx~!没关系的,这个分也不能打粮食吃~没啥。