zoukankan
html css js c++ java
拖放操作和文件复制小功能
一直都没试过拖放操作的用处,今天试了试,发现真的很好用!!
下面的代码没有打入注释,加入了一个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);
}
}
}
}
查看全文
相关阅读:
原生JS写轮播图(转自https://www.cnblogs.com/LIUYANZUO/p/5679753.html)
用JS写成简易计算器(转自https://mp.weixin.qq.com/s/Jxe3V7D0PFLvIFNZPlSyNg)
Js获取当前日期时间的方法
三元运算符的应用(转自百度百科)
<pre> 标签的简要作用(以前未接触过的)
用JavaScript实现两种功能:1、切换全选/全不选文字;2、根据选中个数更新全选框状态;(实例代码来自view-source:http://www.fgm.cc/learn/lesson2/12.html)
Windows 网络通讯开发
函数指针的使用
cin的使用问题
markdown简介
原文地址:https://www.cnblogs.com/top5/p/1723512.html
最新文章
分镜头脚本
光线的方向:顺光、逆光、侧光、侧顺光、侧逆光、顶光、底光
焦距是什么?
浅谈单反相机中什么是光圈 光圈的作用是什么?
单反数码相机的英文
Photography theory: a beginner's guide(telegraph.co.uk)
句柄和指针的区别
喝什么对眼睛好呢!
CronTrigger 表达式 (调度配置)
Dubbo 的应用
热门文章
常用负载均衡策略
JAVA 日期处理工具类 DateUtils
Spring MVC 拦截器配置 -- 利用session
查找某一字段用逗号隔开生成字符串
SQL 日期筛选的两种方式
JAVA短信验证登录
git 配置SSH免密
配置环境变量
js中元素属性值的获取(一般封装成函数)
JS中arguments对象的常见用法(转自https://www.cnblogs.com/LMJBlogs/p/6024148.html)
Copyright © 2011-2022 走看看