C#窗體實現文件拖拽功能

1、首先要把你的窗體或者空間的AllowDrag屬性設置爲允許

      2、註冊DragEnter事件

3、獲得文件路徑,先通過e.Data.GetFormats()方法獲得所有數據格式

4、調用e.GetData()方法根據指定的數據格式獲得文件路徑

5、有了文件路徑,相信一切問題迎刃而解

 下面是例子:

private void textBox1_DragEnter(object sender, DragEventArgs e)
        {
            //獲得數據格式
            File.WriteAllLines("C:\\1.text", e.Data.GetFormats());
            
           
            //獲得文件名
            string[] filename = (string[])e.Data.GetData("FileNameW",true);
            textBox1.Text = filename[0];

            string entesion = Path.GetFileName(textBox1.Text);

            if (!File.Exists(textBox1.Text.Trim())) { return; }
            //讀取文件流
            using (FileStream fsOpen = File.OpenRead(textBox1.Text.Trim()))
            {
                using (FileStream fs = new FileStream("C:\\" + entesion, FileMode.Create, FileAccess.Write))
                {
                    byte[] buffer = new byte[1024 * 1024];
                    while (true)
                    {
                        int result = fsOpen.Read(buffer, 0, buffer.Length);
                        if (result <= 0)
                        {
                            break;
                        }
                        else
                        {
                            fs.Write(buffer, 0, result);
                        }
                    }
                    fs.Flush();
                }
            }

        }
運行結果:



補充一點:

在win7下可能是因爲權限不均衡不觸發DragDrop事件,所以我在裏只用到DragEnter事件,你們可以試下DragDrop事件,可能用戶體驗要好點!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章