2009-08-04 139 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控件)。