第一次寫使用.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.選擇Database Backup目錄或建立新的Database Backup目錄
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;
- //這裡省略了開始處理執行Database Backup的代碼...
- }
二、MessageBox(訊息對話方塊)其實他也沒有什麼好介紹的,只使用到了它的訊息狀態返回執行其它代碼和普通的訊息提示顯示。
1.具有訊息結果返回的處理代碼
C#代碼
- DialogResult resultNum=MessageBox.Show("資料庫檔案已備份到“" + Cls_dbBackRootPath + "”,是否開啟備份目錄?", "Database Backup成功", 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