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);
}
}
}
}
查看全文
相关阅读:
IDEA添加注释模板
Docker安装Mysql
Linux使用
Linux使用
Spring Cloud入门 (5)
在IDEA中将SpringBoot项目打包成jar包
Linux使用
Linux使用
Linux使用- 虚拟机安装 Linux
Spring Cloud入门 (4)
原文地址:https://www.cnblogs.com/top5/p/1723512.html
最新文章
linux 校准时间方法
burp suite 的intruder 四种攻击方式
linux运行lnmp 出现502错误
URL helper 逆向破解思路+详细过程 利用messagebox破解
通过串口连树莓派 无需显示器安装、操作树莓派
树莓派 无屏幕 安装Ubuntu系统 无头安装 无显示器 用网线
QQ帐户的申请与登陆-(字符串操作)
51、52单片机使用矩阵键盘
2018.3 江苏省计算机等级考试 C语言 编程题答案
Youtube-dl 配置 使用方法 + 配合aria2 多线程 下载 + 配合 ffmpeg 自动合并分段视频
热门文章
web安全:防止浏览器记住或自动填写用户名和密码(表单)的终极解决方案
高德,百度,Google地图定位偏移以及坐标系转换
js将字符串中所有反斜杠替换成正斜杠/
sqlserver中将查询结果拼接成字符串
c#调用带有自定义表结构的存储过程
JS网页播放声音实现代码兼容各种浏览器
日期格式化
css 画箭头
日期格式化
DIV+CSS设计时浏览器兼容性
Copyright © 2011-2022 走看看