(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,但是当我们需要在这个方法里写东西的时候,必须要考虑到:
就算是加数据行,也会执行这写代码。