2010-12-22 49 views
0

我有一个自定义组件,它基本上需要验证窗体上的多个控件。这个想法是程序员在设计时可以选择他们想要验证的控件列表。在运行时,我想处理每个选定控件的更改事件,并启动验证过程。使用自定义组件中的控件处理事件Windows窗体

我创建了我的组件。它有一个List属性,用于存储程序员在设计时选择的控件列表(我实现了自己的ListEditor以实现此功能)。现在,在运行时,我想将列表中控件的Changed事件连接到Validate方法...这就是我陷入困境的地方。在运行时调试组件时,它永远不会进入构造函数。如果我在设计时添加事件处理程序,它们不会在运行时触发。

有什么想法?

谢谢

+0

你可以发表一些你如何注册事件的代码? – 2010-12-22 07:27:12

回答

1

希望我的回答比原来的问题更具描述性。

基本上我的问题很简单。我有一个自定义组件,主要职责是对组件驻留的窗体上的一组控件进行验证。在设计时,用户从列表中选择这些组件。所选控件在组件的属性(通用列表)中存储/序列化。在运行时,当列表中的某个控件发生更改(即触发TextChanged)时,验证例程需要在所有选定的控件上运行。

我的问题是,我需要在运行时为每个选定的控件添加一个事件处理程序。存储列表的属性的setter只在设计时被调用(在用户选择他们想要验证的控件之后),这意味着在这一点上添加处理程序是不行的。

解决方案?而不是使用通用列表,我使用了一个BindingList(不能使用ObservableCollection ... .net 2.0),并处理它的ListChanged事件。在运行时将新控件添加到列表中时,我会为该控件连接事件。然后这个事件被解雇,所有事情都应该如此。

相关问题