在C/S程序中,有时候,我们需要需要一个拖放功能,比如打开一个图片,只要我们把这个图片拖放在控件中,就可以打开。这个功能的实现思路如下:
首先,设置确定你想把这个控件拖放到哪个控件上,找到这个控件,并设置这个控件的AllowDrop属性为True,然后实现这个控件的两个方法,分别是
DragEnter和DragDrop方法。
DragEnter方法如下,在这个里面,主要是完成前面的一些预处理。
private void dkpMain_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Move | DragDropEffects.Copy | DragDropEffects.Scroll;
}
else
{
e.Effect = DragDropEffects.None;
}
}
DragDrop方法,主要是实现拖放功能的方法,在这里,我们可以通过e.Data得到拖放过来的数据。代码如下:
private void dkpMain_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] s = (string[])e.Data.GetData(DataFormats.FileDrop);
this._btmp = new Bitmap(s[0]);
this.savefilename = s[0];
this.pbFill.Image = this._btmp;
}
在上面的代码中,我处理的是拖放一张图片,通过s[0]就可以得到这个拖放的图片的全部路径了,知道了这个路径之后,其他的处理就跟普通的是一样的。