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);
}
}
}
}
查看全文
相关阅读:
倚天
第5課 森さんは7時に起きます。
第1課 李さんは中国人です
一个整体的规划
こんにちは
原始凭证
第3課 ここはデパートです
ERP术语
第2課 これはほんです
vc 问题总结
原文地址:https://www.cnblogs.com/top5/p/1723512.html
最新文章
这几天工作总结
成长
开始
西湖边
自省
压力
有点乱
Qt QDomDocument 问题
Win7 未在本地计算机上注册Microsoft.Jet.OLEDB.4.0提供程序
android中的格式化字符串
热门文章
QT中树控件QTreeView开发实例
Linux文件编码格式转换
android中定义全局变量
QT+VS2005 动态加载UI
struts2 action重定向携带参数
使用struts标签控制下拉框的默认值
jquery ajax
Ibatis查询条件对于特殊字符的处理方法
spring定时器
2012/03/08
Copyright © 2011-2022 走看看