现在的位置: 首页 > 综合 > 正文

[project] snail

2013年10月10日 ⁄ 综合 ⁄ 共 2181字 ⁄ 字号 评论关闭

(1)用于读取文件的 StreamReader 在读取完之后最好要用关掉。

StreamReader srTestCases = File.OpenText(testSuitePath);
srTestCases.Close();

(2)在分割string,又需要去掉空字串的时候可以用option:

tcTemp.TestMethod = strTemp.Split(new string[] { " ", "(", ")" }, StringSplitOptions.RemoveEmptyEntries).Last<string>();

(3)ListView 中要向前面有CheckBox可以设置属性CheckBox 为True.

(4)窗口能否变化大小由属性FormBorderStyle设置:FixedSingle.

(5)Inconsistent accessibility: parameter type 'Snail.TestCase' is less accessible than method 'Snail.TestCaseDetails.TestCaseDetails(Snail.TestCase)'

虽然TestCase he TestCaseDetails 是在同一个namespace 下,

但是TestCaseDetails 是TestCaseDetail中public  的构造函数,

而TestCase 没有修饰符,即默认为internal,所以TestCaseDetail 中的public方法访问internal 中的成员收到限制。

解决办法,在class TestCase  前加上public。

(6) 在初始化构造控件的时候,在控件的构造函数里写。

(7)多线程的一个例子:

我们要单独的一个线程去执行另外一个类中的某个方法,那么第一步是,创造一个类的对象:

uploadToPS = new UploadToPS(testSuiteAnalyzer.TestCases);

然后用uploadToPS 这个类中的方法去创建一个线程并启动线程:

threadUpLoad = new Thread(new ThreadStart(uploadToPS.UpLoadMethod));
 threadUpLoad.Start();

如果我们要与这个类进行交互,比如这个线程在实行过程中有什么结果我们需要用到,

那么,我们就需要给这个类定义一个 Event,然后对这个Event 的处理程序绑定到这个Event上,

我们先来考虑如何定义:

 class UploadToPS
{
        List<TestCase> upLoadTestCase = new List<TestCase>();
        public delegate void UploadEventDelegate(int i,UploadResult result);
        public event UploadEventDelegate uploadEvent;

 public void UpLoadMethod()
        {
            UploadResult result;
            for (int i = 0; i < upLoadTestCase.Count; i++)
            {
                result = UploadResult.Unnecessary;
                uploadEvent(i, result);
             }
        }       

}

我们先定义一个delegate UploadEventDelegate,

然后用这个delegate定义一个Event(为什么这样定义Event可以研究下),这样我们就可以在方法里触发这个Event。

所以这个类定义了两个(a)一个delegate(b)一个Event

我们可以为这样的Event 指定处理方法:

 uploadToPS.uploadEvent += new UploadToPS.UploadEventDelegate(lvUpdateCases_UploadResultProcesser);

我们观察发现,所有的这些都是用delegate联系在一起的:

(a) 处理方法:lvUpdateCases_UploadResultProcesser

(b) Event:uploadToPS.uploadEvent

都和我们定义的delegate的格式是一样的,这也是很自然的事。

(8) 在用listview 的时候,你要想在某一列上修改,你首先要在创建的时候就加上去。

尽管ColumnHeader 存在,但是Items里必须先加上这个SubItem。

(9) WinForm 没什么特别的,只是一个可以show 的class,和一般的类一样。

这样你就可以理解,在Create出来的这个类没有被释放的前提下,在你修改并close 之后,再打开,里面的东西不会变。

(10) 我们需要注意一个地方:在用listView的时候,去过我们设置成有CheckBox,

那么当我们在往表格里添加数据行的时候,也会触发ListView_ItemChecked 这个事件,

尽管e.ItemChecked 这一项是false,但是当我们需要在这个方法里写东西的时候,必须要考虑到:

就算是加数据行,也会执行这写代码。

 

抱歉!评论已关闭.