簡體   English   中英

Windows窗體組件訪問

[英]Windows Form Components Access

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

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.
      }
}

我的問題是,如何在不影響反射性能的情況下訪問非可視組件? 歡迎使用任何代碼段。 如果僅是反射,那么您能為我提供組件訪問的最佳方法嗎?

謝謝,

您應該傳遞一個強類型的窗體或接口實現,該實現要么直接公開控件(而不是首選),要么將視圖上的操作抽象為可以從控制器調用的方法/屬性(首選)。

不,反思不是辦法。 就簡單地完成目標操作而言,您可以公開一個只讀屬性,該屬性返回控件。 例如,假設您在表單上有一個名為imageList1ImageList

public ImageList ImageList
{
    get { return imageList1; }
}

然后,您可以訪問ImageList屬性以獲取對imageList1的引用。

然而

這是臭代碼。 應該公開的是與ImageList要做的事情有關的屬性和函數。 您的外部代碼不應該關心表單上的特定實現(換句話說,它應該知道您需要對圖像做一些事情並提供完成這些操作的功能;它不需要知道它是一個ImageList控件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM