拖放操作和文件複製小功能

一直都沒試過拖放操作的用處,今天試了試,發現真的很好用!! 下面的代碼沒有打入註釋,加入了一個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)         {             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);             }         }         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;             }             else             {                 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()));                     lstFilePath.Items[i] = "複製完成";                 }             }             lstFilePath.Items.Clear();             ExBtnExecute.CtlEnabled = true;         }         private void txtSelDrive_DoubleClick(object sender, EventArgs e)         {             FolderSelDialog.ShowDialog(this);             txtSelDrive.Text = FolderSelDialog.SelectedPath;         }                  /// <summary>         /// 複製一個目錄下的所有文件或目錄到一個新的目錄下         /// </summary>         /// <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);             }         }     } }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章