Drag&Drop عکس از محیط ویندوز به داخل PictureBox

یک برنامه ویندوزی ایجاد کنید و یک کنترل PictureBox بر روی فرم قرار دهید:
drag-and-drop-photo-windows-picturebox-csharp-01
خاصیت AllowDrop فرم را برابر True قرار دهید. و سپس حال کدهای زیر را در رویدادهای DragDrop و DargEnter فرم بنویسید:

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;
using System.IO;

namespace DragAndDropintoPictureBox
{
    public partial class Form1 : Form
    {
        protected bool validData;
        string path;
        protected Image image;
        protected Thread getImageThread;

        public Form1()
        {
            InitializeComponent();
        }

        protected void LoadImage()
        {
            image = new Bitmap(path);
        }

        private bool GetFilename(out string filename, DragEventArgs e)
        {
            bool Return = false;
            filename = String.Empty;
            if ((e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy)
            {
                Array data = ((IDataObject)e.Data).GetData("FileDrop") as Array;
                if (data != null)
                {
                    if ((data.Length == 1) && (data.GetValue(0) is String))
                    {
                        filename = ((string[])data)[0];
                        string Extension = Path.GetExtension(filename).ToLower();
                        if ((Extension == ".jpg") || (Extension == ".png") || (Extension == ".bmp"))
                        {
                            Return = true;
                        }
                    }
                }
            }
            return Return;
        }

        private void Form1_DragEnter(object sender, DragEventArgs e)
        {
            string filename;
            validData = GetFilename(out filename, e);
            if (validData)
            {
                path = filename;
                getImageThread = new Thread(new ThreadStart(LoadImage));
                getImageThread.Start();
                e.Effect = DragDropEffects.Copy;
            }
            else
                e.Effect = DragDropEffects.None;
        }

        private void Form1_DragDrop(object sender, DragEventArgs e)
        {
            if (validData)
            {
                while (getImageThread.IsAlive)
                {
                    Application.DoEvents();
                    Thread.Sleep(0);
                }
                pictureBox1.Image = image;
            }
        }
    }
}

حال برنامه را اجرا و یک عکس از محیط کامپیوتر بر روی فرم بکشید و رها کنید.