下面给出了使用C# 开发的一个压缩ACCESS数据库的程序
像FolderBrowserDialog(用于浏览选择文件夹的对话框)、MessageBox(消息处理对话框)、DirectoryInfo(目录信息,可用于创建、检测是否存在等对目录的操作)、FileInfo(文件信息,可用于文件的检测、文件信息的获取、复制等操作)、DataGridView(数据表格控件,用于显示文件信息列表数据)、DataRowView(对一些数据源信息进行筛选,排序)、System.Diagnostics.Process.Start(启动其它程序打开文件夹目录),下面就依次介绍一下在此软件开发中我都使用到以上控件、对象的哪些内容。
一、FolderBrowserDialog(文件夹浏览对话框),在此软件中用于打开选择数据库根目录或打开创建、选择备份目录,下面是两处位置的代码详细介绍。
1.选择数据库目录,在此处不需要新建文件夹,因此屏蔽新建文件夹按钮。
C#代码
- FolderBrowserDialog df = new FolderBrowserDialog();
-
- //设置文件浏览对话框上的描述内容
- df.Description = "选择所有数据库文件所在根目录地址";
-
- //不显示对话框下方的创建新文件夹按钮
- df.ShowNewFolderButton = false;
-
- /*
- 判断是否已直接输入文件夹目录地址,如果存在则将此值赋于对话框的已选地址,这样就可以让对话框显示您上次选择或添加的目录地址了。
- */
- if (tBoxDbRoot.Text != "")
- {
- df.SelectedPath = tBoxDbRoot.Text;
- }
- else
- {
- df.RootFolder = Environment.SpecialFolder.MyComputer;//指定对话框默认显示的根目录地址 注意RootFolder的接收数据类型
- }
- //显示文件夹对话框,并返回对话框处理结果数值
- DialogResult result = df.ShowDialog();
- if (result == DialogResult.OK) //另外一种判断方法 if (df.ShowDialog(this) == DialogResult.OK)
- {
- //将中的数据库目录地址赋于类全局变量数据库根目录
- string folderPath = df.SelectedPath;
- if (folderPath != "")
- {
- tBoxDbRoot.Text = folderPath;
- Cls_dbRootPath = tBoxDbRoot.Text;
- }
- }
2.选择数据库备份目录或创建新的数据库备份目录
C#代码
- FolderBrowserDialog bakFolder = new FolderBrowserDialog();
- bakFolder.Description = "选择所有数据库文件备份目录";
- //这里没有设计 bakFolder.ShowNewFolderButton是因为默认些按钮是显示的。
- if (Cls_dbBackRootPath != "")
- {
- bakFolder.SelectedPath = Cls_dbBackRootPath;
- }
- else
- {
- bakFolder.RootFolder = Environment.SpecialFolder.MyComputer;
- }
- if (bakFolder.ShowDialog(this) == DialogResult.OK)
- {
- Cls_dbBackRootPath = bakFolder.SelectedPath;
- //这里省略了开始处理执行数据库备份的代码...
- }
二、MessageBox(消息对话框)其实他也没有什么好介绍的,只使用到了它的消息状态返回执行其它代码和普通的消息提示显示。
1.具有消息结果返回的处理代码
C#代码
- DialogResult resultNum=MessageBox.Show("数据库文件已备份到“" + Cls_dbBackRootPath + "”,是否打开备份目录?", "数据库备份成功", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
- if (resultNum == DialogResult.Yes)//判断是否按下“是”的按钮
- {
- openDirectoryAddress(Cls_dbBackRootPath);
- }
这里就不需要再做介绍了,看一下消息对话框的几个参数都分别是什么
2.以不同姿态显示的消息对话框
C#代码
- MessageBox.Show("这里是消息的提示内容", "消息的提示标题",消息对话框上显示的按钮, 消息对话框上显示的提示图标);
三、DirectoryInfo(目录信息)检测目录是否存在、创建目录文件夹在软件中主要用于分析并创建指定的文件地址字符串中各级目录
1.检测目录是否存在使用Exists方法
C#代码
- DirectoryInfo curFolderRoot = new DirectoryInfo(Cls_dbRootPath);//指定需要检测的文件夹物理地址
- if (curFolderRoot.Exists)
- {
- //...
- }
2.创建目录使用Create()方法
C#代码
- DirectoryInfo curFolderRoot = new DirectoryInfo(Cls_dbRootPath);//指定需要检测的文件夹物理地址
- if (curFolderRoot.Exists)
- {
- curFolderRoot.Create()
- }
四、FileInfo(文件信息) 获取文件信息、复制、删除文件等,将指定文件夹下的符合条件的文件的相关信息依次写入DataGridView控件。
1.获取文件信息代码:
C#代码
- FileInfo dbFile = new FileInfo(dbPath);
-
- 写入DataGridView控件的某行某列上
- dGrideFileList.Rows[rowsNum].Cells[1].Value = dbFile.Length;
-
- 修改时间写入
- dGrideFileList.Rows[rowsNum].Cells[5].Value = dbFile.LastWriteTime.ToString();
2.检测文件是否存在执行删除复制操作
C#代码
- FileInfo copyFile = new FileInfo(copyToPath);
- 检测文件是否存在
- if (copyFile.Exists)
- {
- //如果存在文件则执行删除操作
- File.Delete(copyToPath);
- }
- 执行文件的复制操作
- File.Copy(dbPath, copyToPath);
五、DataGridView(数据表格控件)用于显示、更新、删除等对数据列表的操作
1.将遍历符合要求的数据添加到控件
C#代码
- filesTotelSize += curDbFile.Length;
-
- //将文件信息写入字符串数组
- string[] fileInfoArr = new string[]{
- curDbFile.FullName.Replace(Cls_dbRootPath,"").ToString(),
- CheckFile.FormatSize(curDbFile.Length),
- "0",
- "未压缩",
- CheckFile.GetTypeName(filePath),
- curDbFile.LastWriteTime.ToString()
- };
-
- //将文件行数组数据添加至控件行集中
- dGrideFileList.Rows.Add(fileInfoArr);
-
- //刷新控件显示
- dGrideFileList.Refresh();
2.让控件垂直滚动条自动滚动
C#代码
- dGrideFileList.FirstDisplayedScrollingRowIndex = i;
- dGrideFileList.Refresh();
3.光标定位跟随遍历定位到控件单元格
C#代码
- dGrideFileList.CurrentCell=dGrideFileList.Rows[i].Cells[0];
- dGrideFileList.Refresh();
4.DataRowView删除控件选中行
C#代码
- //删除选中行数据
- if (this.dGrideFileList.SelectedRows.Count > 0)
- {
- DataRowView drv = dGrideFileList.SelectedRows[0].DataBoundItem as DataRowView;
- drv.Delete();
- }
六、Process启动Exporler.exe打开指定物理地址文件夹
C#代码
- #region 打开目录地址
- /// <summary>
- /// 打开目录地址
- /// </summary>
- /// <param name="dirAddress">需要打开的文件夹目录物理地址</param>
- private void openDirectoryAddress(string dirAddress)
- {
- DirectoryInfo dirFolder = new DirectoryInfo(dirAddress);
- if (dirFolder.Exists)
- {
- System.Diagnostics.Process.Start("explorer.exe", dirAddress);
- }
- else
- {
- MessageBox.Show("未找到需要打开的目录地址", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
- #endregion