拖放操作和文件复制小功能

一直都没试过拖放操作的用处,今天试了试,发现真的很好用!! 下面的代码没有打入注释,加入了一个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);             }         }     } }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章