天天看點

拖放操作和檔案複制小功能

一直都沒試過拖放操作的用處,今天試了試,發現真的很好用!!

下面的代碼沒有打入注釋,加入了一個ListBox,當檔案拖放上來後,講内容顯示在裡面

拖放操作和檔案複制小功能

 private void lstFilePath_DragEnter(object sender, DragEventArgs e)

拖放操作和檔案複制小功能

        {

拖放操作和檔案複制小功能

            if (e.Data.GetDataPresent(DataFormats.FileDrop))

拖放操作和檔案複制小功能

            {

拖放操作和檔案複制小功能

                e.Effect = DragDropEffects.Link;

拖放操作和檔案複制小功能

            }

拖放操作和檔案複制小功能

            else

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                e.Effect = DragDropEffects.None;

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        }

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        private void lstFilePath_DragDrop(object sender, DragEventArgs e)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            foreach (string strPath in (string[])e.Data.GetData(DataFormats.FileDrop))

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                lstFilePath.Items.Add(strPath);

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

将整個窗體代碼都複制下來,是一個複制的小程式,将拖放到LISTBOX裡的檔案複制到文本框裡指定的位置,裡面用到了一個外部控件,可以使用普通的button替換之

拖放操作和檔案複制小功能

using System;

拖放操作和檔案複制小功能

using System.Collections.Generic;

拖放操作和檔案複制小功能

using System.ComponentModel;

拖放操作和檔案複制小功能

using System.Data;

拖放操作和檔案複制小功能

using System.Drawing;

拖放操作和檔案複制小功能

using System.Text;

拖放操作和檔案複制小功能

using System.Windows.Forms;

拖放操作和檔案複制小功能

using System.IO;

拖放操作和檔案複制小功能

using System.Diagnostics;

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

namespace PersonalDisk

拖放操作和檔案複制小功能

{

拖放操作和檔案複制小功能

    public partial class frmDrag : Form

拖放操作和檔案複制小功能

    {

拖放操作和檔案複制小功能

        /// <summary>

拖放操作和檔案複制小功能

        /// 獲得/設定一個值,判斷是否已經存在了一個類的執行個體

拖放操作和檔案複制小功能

        /// </summary>

拖放操作和檔案複制小功能

        public static bool IsExist=false;

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        public frmDrag()

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            InitializeComponent();

拖放操作和檔案複制小功能

            frmDrag.IsExist = true;

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        private void frmDrag_MouseDown(object sender, MouseEventArgs e)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            //如果滑鼠指針在标題欄範圍内并且按下了滑鼠左鍵,則觸發移動标題欄方法

拖放操作和檔案複制小功能

            if (e.Button == MouseButtons.Left && e.Y <= 25)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                Program.ReleaseCapture();

拖放操作和檔案複制小功能

                Program.SendMessage(this.Handle, Program.WM_SYSCOMMAND, Program.SC_MOVE + Program.HTCAPTION, 0);

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        private void picControlClose_Click(object sender, EventArgs e)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            frmDrag.IsExist = false;            

拖放操作和檔案複制小功能

            this.Close();

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        private void picControlMin_Click(object sender, EventArgs e)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            this.WindowState = FormWindowState.Minimized;

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        private void lstFilePath_DragEnter(object sender, DragEventArgs e)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        private void ExBtnClose_ClickEvent(object sender, EventArgs e)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            picControlClose_Click(null,null);

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        private void ExBtnClear_ClickEvent(object sender, EventArgs e)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            lstFilePath.Items.Clear();

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        private void ExBtnDel_ClickEvent(object sender, EventArgs e)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            lstFilePath.Items.RemoveAt(lstFilePath.SelectedIndex);

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        private void picControlBring_Click(object sender, EventArgs e)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            if (this.TopMost == true)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                this.TopMost = false;

拖放操作和檔案複制小功能

                picControlBring.Image = PersonalDisk.Properties.Resources.btnBottom;

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                this.TopMost = true;

拖放操作和檔案複制小功能

                picControlBring.Image = PersonalDisk.Properties.Resources.btnTop;

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        private void ExBtnExecute_ClickEvent(object sender, EventArgs e)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            ExBtnExecute.CtlEnabled = false;

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            for (int i = 0; i < lstFilePath.Items.Count; i++)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                Application.DoEvents();

拖放操作和檔案複制小功能

                lstFilePath.SetSelected(i, true);

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                //如果目前字元串是一個目錄則

拖放操作和檔案複制小功能

.

拖放操作和檔案複制小功能

                if (Directory.Exists(lstFilePath.Items[i].ToString()))

拖放操作和檔案複制小功能

                {

拖放操作和檔案複制小功能

                    CopyDirectory(lstFilePath.Items[i].ToString(), txtSelDrive.Text +"\\"+ Path.GetFileName(lstFilePath.Items[i].ToString()));

拖放操作和檔案複制小功能

                    lstFilePath.Items[i] = "複制完成

拖放操作和檔案複制小功能

";

拖放操作和檔案複制小功能

                }

拖放操作和檔案複制小功能

                else

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                    if (!File.Exists(lstFilePath.Items[i].ToString())) continue; //如果檔案不存在繼續下一個循環

拖放操作和檔案複制小功能

                    File.Copy(lstFilePath.Items[i].ToString(), txtSelDrive.Text + "\\" + Path.GetFileName(lstFilePath.Items[i].ToString()));

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            ExBtnExecute.CtlEnabled = true;

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        private void txtSelDrive_DoubleClick(object sender, EventArgs e)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            FolderSelDialog.ShowDialog(this);

拖放操作和檔案複制小功能

            txtSelDrive.Text = FolderSelDialog.SelectedPath;

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        /// 複制一個目錄下的所有檔案或目錄到一個新的目錄下

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

        /// <param name="sourcePath">源目錄路徑</param>

拖放操作和檔案複制小功能

        /// <param name="destPath">目标目錄路徑</param>

拖放操作和檔案複制小功能

        private void CopyDirectory(string sourcePath, string destPath)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            try

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                //如果目标路徑沒有以\結尾則加之

拖放操作和檔案複制小功能

                if (destPath[destPath.Length - 1] != Path.DirectorySeparatorChar)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                    destPath += Path.DirectorySeparatorChar;

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                if (!Directory.Exists(destPath))

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                    Directory.CreateDirectory(destPath);

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                string[] fileList = Directory.GetFileSystemEntries(sourcePath);

拖放操作和檔案複制小功能

                foreach (string file in fileList)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                    //如果是一個目錄則

拖放操作和檔案複制小功能

                    if (Directory.Exists(file))

拖放操作和檔案複制小功能

                    {

拖放操作和檔案複制小功能

                        CopyDirectory(file, destPath + Path.GetFileName(file));

拖放操作和檔案複制小功能

                    }

拖放操作和檔案複制小功能

                    else

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                        File.Copy(file, destPath + Path.GetFileName(file),true);

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

            catch(IOException ioe)

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

                MessageBox.Show(ioe.Message, "複制檔案時出錯", MessageBoxButtons.OK, MessageBoxIcon.Warning);

拖放操作和檔案複制小功能
拖放操作和檔案複制小功能
拖放操作和檔案複制小功能

    }

拖放操作和檔案複制小功能

}