2011年8月29日 星期一

C# 如何強制驅動物件的事件?

我之前寫了一個通用的設定函數,
簡單的說呢,就是傳進去一個 BindingSource 與按鈕,
當按下按鈕的時候會依照條件去對 BindingSource 做 Filter,
然後 Filter 完了之後我想要執行 BindingSource.PositionChanged 的事件;
如果說這是在同一個 cs 的話很好處理,
但是就像我第一句所說的,我是要寫一個通用函數,
所以不在同一個 cs ,所以我沒有辦法直接呼叫 BindingSource.PositionChanged 的事件,
然後我也不確定傳進來的 BindingSource 是不是有 PositionChanged 的事件。
那我要怎麼樣知道傳進來的 BindingSource 有沒有 PositionChanged 的事件呢?
如果有 PositionChanged 的事件,那我又要怎麼樣去執行呢?
就這樣,花了我兩天的時間上網 google ,
到處找、到處 try!
發現網路上問這樣的問題的人很多,
但是我卻沒有找到解答,
最後我從大家片段的回答中 try 出來了!
現在就跟大家來分享吧!

2011年8月4日 星期四

List.ForEach:要列印出 List 的內容的時候的另一種做法!

假設我有某個函數回傳一個List<string>,如下:


List<string> lst = GetListFunc();


然後我現在想把 lst 的內容寫到檔案裡面去該怎麼做呢?
通常不外乎下面兩種做法:
(備註:sw 是一個 StreamWriter 變數)



                foreach (string s in lst)
                {
                    sw.WriteLine(s);
                }



                for (int i = 0; i < lst.Count; i++)
                {
                    sw.WriteLine(lst[i]);
                }

但是我發現其實還有另外一種寫法,
List.ForEach 的方法,
然後 delegate 上去一個事件,如下:

lst.ForEach(delegate(string name) { sw.WriteLine(name); });

這樣寫起來感覺程式碼好像高級了一點,
但是有比較厲害嗎?好像也沒有耶!