第一次寫使用.Net C# 開發了一個稍稍像樣子的軟件,在這個軟件開發過程中我查了好多資料,也學到了很多小技巧
像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