三測試使用
程序測試運行界面
界面部分代碼大多數由設計器生成下面列出了主要添加代碼
//委托更新文本框
private delegate void AppendTextHandler(string content);
//標記轉換操作是否完成
private int convertOK =;
private SystemWindowsFormsTextBox textBoxFolder;//路徑文本框
private SystemWindowsFormsButton buttonFolder;//浏覽按鈕
private SystemWindowsFormsTextBox textBoxInfo;//信息顯示框
private SystemWindowsFormsButton buttonOK;//運行按鈕
private SystemWindowsFormsButton buttonCancel;//退出按鈕
按鈕處理函數用來打開一個路徑選擇框
private void buttonFolder_Click(object sender SystemEventArgs e)
{
FolderBrowserDialog myDialog = new FolderBrowserDialog();
myDialogShowNewFolderButton = false;
myDialogDescription = 選擇需要處理的解決方案或項目目錄;
if(myDialogShowDialog()==DialogResultOK)
thistextBoxFolderText = myDialogSelectedPath;
myDialogDispose();
}
運行函數在這裡面實例化VssConverter類並調用了RemoveVss方法運行時把幾個按鈕禁了裡面注冊了兩個事件起信息傳遞作用不過對於直接在地址欄中輸入非法路徑沒有做具體判斷
private void buttonOK_Click(object sender SystemEventArgs e)
{
if(thistextBoxFolderTextLength>)
{
thistextBoxInfoClear();
nvertOK = ;
thisbuttonOKEnabled = false;
thisbuttonFolderEnabled = false;
thisbuttonCancelEnabled = false;
thistextBoxFolderEnabled = false;
VssConverter vssConverter = new VssConverter(thistextBoxFolderText);
vssConverterOperateNotify += new OperateNotifyHandler(vssConverter_OperateNotify);
vssConverterThreadCompleted += new EventHandler(vssConverter_ThreadCompleted);
vssConverterRemoveVss();
}
else
MessageBoxShow(請輸入解決方案或項目路徑!);
}
下面是兩個事件處理函數第一個是用來在前台即時顯示當前處理的文件信息第二個函數是用來通知線程的執行結果函數如下
// 信息通知
private void vssConverter_OperateNotify(object sender VssEventArgs e)
{
AppendTextHandler ath = new AppendTextHandler(thistextBoxInfoAppendText);
thistextBoxInfoBeginInvoke(athnew object[]{eMessage+EnvironmentNewLine});
}
// 線程結束通知
private void vssConverter_ThreadCompleted(object sender EventArgs e)
{
if(nvertOK==)
nvertOK++;
else
{
thisbuttonOKEnabled = true;
thisbuttonFolderEnabled = true;
thisbuttonCancelEnabled = true;
thistextBoxFolderEnabled = true;
thistextBoxInfoAppendText(#### 轉換完成 ####);
}
}
總結程序通過搜索指定目錄下的文件根據擴展名進行相應的操作來完成處理其中為了加快運行速度增加了線程來處理
From:http://tw.wingwit.com/Article/program/net/201311/11757.html