用C#去除代码的SourceSafe管理(续篇)
2024-07-21 02:19:24
供稿:网友
用c#去除代码的sourcesafe管理(续篇)
作者:秋枫
三、测试使用
程序测试运行界面,
界面部分代码大多数由设计器生成,下面列出了主要添加代码,
//委托,更新文本框
private delegate void appendtexthandler(string content);
//标记转换操作是否完成
private int convertok =0;
private system.windows.forms.textbox textboxfolder;//路径文本框
private system.windows.forms.button buttonfolder;//浏览按钮
private system.windows.forms.textbox textboxinfo;//信息显示框
private system.windows.forms.button buttonok;//运行按钮
private system.windows.forms.button buttoncancel;//退出按钮
按钮处理函数用来打开一个路径选择框,
private void buttonfolder_click(object sender, system.eventargs e)
{
folderbrowserdialog mydialog = new folderbrowserdialog();
mydialog.shownewfolderbutton = false;
mydialog.description = "选择需要处理的解决方案或项目目录";
if(mydialog.showdialog()==dialogresult.ok)
this.textboxfolder.text = mydialog.selectedpath;
mydialog.dispose();
}
运行函数,在这里面实例化vssconverter类,并调用了removevss方法,运行时把几个按钮禁了,里面注册了两个事件,起信息传递作用,不过对于直接在地址栏中输入非法路径没有做具体判断,
private void buttonok_click(object sender, system.eventargs e)
{
if(this.textboxfolder.text.length>1)
{
this.textboxinfo.clear();
this.convertok = 0;
this.buttonok.enabled = false;
this.buttonfolder.enabled = false;
this.buttoncancel.enabled = false;
this.textboxfolder.enabled = false;
vssconverter vssconverter = new vssconverter(this.textboxfolder.text);
vssconverter.operatenotify += new operatenotifyhandler(vssconverter_operatenotify);
vssconverter.threadcompleted += new eventhandler(vssconverter_threadcompleted);
vssconverter.removevss();
}
else
messagebox.show("请输入解决方案或项目路径!");
}
下面是两个事件处理函数,第一个是用来在前台即时显示当前处理的文件信息,第二个函数是用来通知线程的执行结果。函数如下,
// 信息通知
private void vssconverter_operatenotify(object sender, vsseventargs e)
{
appendtexthandler ath = new appendtexthandler(this.textboxinfo.appendtext);
this.textboxinfo.begininvoke(ath,new object[]{e.message+environment.newline});
}
// 线程结束通知
private void vssconverter_threadcompleted(object sender, eventargs e)
{
if(this.convertok==0)
this.convertok++;
else
{
this.buttonok.enabled = true;
this.buttonfolder.enabled = true;
this.buttoncancel.enabled = true;
this.textboxfolder.enabled = true;
this.textboxinfo.appendtext("#### 转换完成 ####");
}
}
总结,程序通过搜索指定目录下的文件,根据扩展名进行相应的操作来完成处理,其中为了加快运行速度增加了线程来处理。欢迎大家交流,我的邮件地址[email protected] csdn技术论坛。