Windows窗体组件访问

时间:2009-08-04 02:09:47

标签: c# .net compact-framework

从表单实例访问组件(例如imagelist,timer)的最佳方法是什么?我正在使用C#在.NET Compact Framework版本3.5 SP1上处理多窗体窗体应用程序。我有一个与MVC实现的每个表单相关联的Controller类。这是我的示例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.
      }
}

我的问题是如何在不受反射影响的情况下访问非可视组件?任何代码片段都是受欢迎的。如果只有反射方式,那么您能为我提供最佳的组件访问方式吗?

谢谢,

2 个答案:

答案 0 :(得分:2)

您应该传递一个强类型表单或接口实现,它直接公开控件(不是首选)或将视图上的操作抽象为可以从控制器调用的方法/属性(首选)。

答案 1 :(得分:0)

不,反思不是这样的。就简单地完成您的目标而言,您可以公开一个返回控件的只读属性。例如,假设您的表单上有一个名为ImageList的{​​{1}}:

imageList1

然后,您可以访问public ImageList ImageList { get { return imageList1; } } 属性以获取对ImageList的引用。

<强> 无论其

这是臭臭的代码。 应该公开的内容是与您需要使用imageList1相关的属性和函数。您的外部代码不应该关心表单上的特定实现(换句话说,它应该知道您需要对图像执行某些操作并提供完成这些操作的功能;它不应该知道它是{{1}控制)。