将事件处理程序添加到自定义控件

时间:2011-08-08 23:58:28

标签: custom-controls event-handling

我有一个自定义控件,我用图片框,标签和组合框创建,我想创建一个自定义的SelectedIndexChanged事件handerler,这样我可以在组合框的组件更改时执行操作,但是用它作为一个自定义控件,默认情况下我无法使用此事件,因此我希望我可以创建一个。自定义控件和事件对我来说是新的。非常感谢任何帮助,非常感谢。

1 个答案:

答案 0 :(得分:0)

如果您只想在不告知现在选择了哪些项目的情况下触发事件,则可以执行以下操作:

public event EventHandler SelectionChanged;

protected virtual void OnSelectionChanged() {
    if (SelectionChanged != null) {
        SelectionChanged(this, new EventArgs());
    }
}

只需在您的控件中调用OnSelectionChanged()即可触发事件SelectionChanged

如果您还想知道现在选择了哪些元素,您可以使用以下内容,只需将object[]替换为您的对象:

public event SelectionChangedEventHandler SelectionChanged;
public delegate void SelectionChangedEventHandler(object sender, SelectionChangedEventArgs e);

protected virtual void OnSelectionChanged(object[] SelectedItems) {
    if (SelectionChanged != null) {
        SelectionChanged(this, new SelectionChangedEventArgs(SelectedItems));
    }
}

public class SelectionChangedEventArgs : EventArgs {
    public object[] SelectedItems { get; private set; }

    public SelectionChangedEventArgs(object[] SelectedItems) {
        this.SelectedItems = SelectedItems;
    }
}