2009-08-04 116 views
0

什麼是從窗體實例訪問組件(例如圖像列表,定時器)的最佳方式?我正在使用C#在.NET Compact Framework 3.5 SP1上處理多窗體窗體應用程序。我有一個Controller類與MVC實現的每個表單關聯。這是我的示例Controller類。Windows窗體組件訪問

public class Controller 
{ 
     public void Init(Form f) 
     { 
      //f.Controls will allow access to all controls 
      //How shall I access imagelist, timer on form f. 
     } 
} 

我的問題是我怎麼能訪問非可視化組件,而沒有反射的性能打擊?任何代碼片段都是受歡迎的。如果反思是唯一的方式,那麼你能否提供我最佳的組件訪問方式?

謝謝,

回答

2

你應該傳遞強類型的形式或接口的實現,其可以直接(不優先選擇)暴露控制或抽象視圖上的操作轉換方法/屬性可以從被稱爲控制器(首選)。

0

不,反思不是這樣。就簡單地完成您要做的事情而言,您可以公開一個返回控件的只讀屬性。例如,假設您有一個名爲您的窗體上的ImageListimageList1

public ImageList ImageList 
{ 
    get { return imageList1; } 
} 

然後,您可以訪問ImageList屬性來獲取參考imageList1

無論其

這是臭代碼。 應該揭露是屬性和功能,涉及到你需要做什麼ImageList。你的外部代碼不應該關心你的表單上的特定實現(換句話說,它應該知道你需要對圖像做些什麼,並提供完成這些操作的功能;它不需要知道它是一個ImageList控件)。