怎样实现窗体的拖放功能

    在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]就可以得到这个拖放的图片的全部路径了,知道了这个路径之后,其他的处理就跟普通的是一样的。

原文地址:https://www.cnblogs.com/xiaoxiangfeizi/p/2605566.html