使用自定义组件Windows窗体中的控件处理事件

时间:2010-12-22 07:22:59

标签: winforms event-handling custom-controls

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

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

任何想法?

感谢

1 个答案:

答案 0 :(得分:1)

希望我的答案比原始问题更具描述性。

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

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

解决方案?我没有使用泛型List,而是使用了BindingList(不能使用ObservableCollection ... .net 2.0),并处理了它的ListChanged事件。在运行时将新控件添加到List时,我会为该控件连接事件。然后触发该事件,一切正常。