如何实现用拖拽的方法把文件夹中的图片拖入picturebox,成为picturebox.image

解决方案 »

  1.   

    1.picturebox.AllowDrop = true;
    2.picturebox的DragOver事件里查看是不是可以打开的图片
    3.picturebox的DragDrop事件里将picture显示拖放的图片
      

  2.   


    //示例
    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();            this.AllowDrop = true;
                pictureBox1.AllowDrop = true;
                pictureBox1.DragEnter += new DragEventHandler(pictureBox1_DragEnter);
                pictureBox1.DragDrop += new DragEventHandler(pictureBox1_DragDrop);
            }        void pictureBox1_DragDrop(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent("FileDrop"))
                {
                    string[] files = e.Data.GetData("FileDrop") as string[];
                    if (files != null && files.Length > 0)
                    {
                        pictureBox1.Image = Image.FromFile(files[0]);
                    }
                }
            }        void pictureBox1_DragEnter(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent("FileDrop"))
                {
                    e.Effect = e.AllowedEffect;
                }
            }
        }
      

  3.   

    楼上我试了下,图像没有出来,要不要用到graphics.drawImage()?
      

  4.   

    需要重写PictureBox类,下面代码在VS2005下测试通过.// 重写PictureBox类,增加AllowDrop属性
    public partial class PictureBoxAllowDrop : PictureBox 
    {
        private bool YesNo = true;  
        public override bool AllowDrop
        {
            get { return YesNo; }
            set { YesNo = value; }
        }
    }private void pictureBox1_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.Bitmap) || e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            e.Effect = DragDropEffects.Copy;
        }
        else
        {
            e.Effect = DragDropEffects.None;
        }
    }private void pictureBox1_DragDrop(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
            pictureBox1.Image = Image.FromFile(files[0]);
        }    if (e.Data.GetDataPresent(DataFormats.Bitmap))
        {
           pictureBox1.Image = (Image)e.Data.GetData(DataFormats.Bitmap);
        }
    }
      

  5.   

    我自己调出来了。。不是picturebox的事件。。要form的事件
    隔了一个月了
    。。真囧
      

  6.   

    6楼的,能不能给个完整代码,就象怎样重写,以及后面picturebox的定义等