[英]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.
}
}
我的问题是,如何在不影响反射性能的情况下访问非可视组件? 欢迎使用任何代码段。 如果仅是反射,那么您能为我提供组件访问的最佳方法吗?
谢谢,
您应该传递一个强类型的窗体或接口实现,该实现要么直接公开控件(而不是首选),要么将视图上的操作抽象为可以从控制器调用的方法/属性(首选)。
不,反思不是办法。 就简单地完成目标操作而言,您可以公开一个只读属性,该属性返回控件。 例如,假设您在表单上有一个名为imageList1
的ImageList
:
public ImageList ImageList
{
get { return imageList1; }
}
然后,您可以访问ImageList
属性以获取对imageList1
的引用。
然而
这是臭代码。 您应该公开的是与ImageList
要做的事情有关的属性和函数。 您的外部代码不应该关心表单上的特定实现(换句话说,它应该知道您需要对图像做一些事情并提供完成这些操作的功能;它不需要知道它是一个ImageList
控件)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.