Добавление обработчика событий в пользовательский элемент управления - PullRequest
0 голосов
/ 09 августа 2011

У меня есть пользовательский элемент управления, который я создал с помощью графического блока, метки и комбинированного списка. Я хочу создать собственный обработчик событий SelectedIndexChanged, чтобы я мог выполнять действия, когда индекс комбинированного списка был изменен, но с ним как пользовательский элемент управления это событие не доступно для меня по умолчанию, поэтому я надеюсь, что смогу его создать. пользовательские элементы управления и события являются новыми для меня. любая помощь будет оценена, спасибо большое.

1 Ответ

0 голосов
/ 18 августа 2011

Если вы просто хотите запустить событие, не сообщая, какие элементы теперь выбраны, вы можете сделать это с помощью:

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;
    }
}
...