Событие OnClick для составных элементов UserControls - PullRequest
0 голосов
/ 23 июня 2010

Я хочу создать UserControl с несколькими элементами управления внутри.Эти элементы управления должны вести себя аналогично переключателям, т. Е. Состояние одного из них влияет на состояние остальных.Для этого я хотел бы иметь возможность обрабатывать событие OnClick на каждом из элементов управления родительского элемента.

Одним из решений может быть вызов метода родительского элемента для выполнения глобального UserControlизменить, из метода дочерних элементов управления * OnClick.Примерно так:

class Child : UserControl
{
    ...

    protected override void OnClick(EventArgs z_args)
    {
       // do own stuff

       ((PartentType)Parent).ChangeStatus(this);
    }

    ...
}

Это решение, но мне интересно, есть ли более стандартный и элегантный способ решения этой проблемы.Спасибо!

1 Ответ

2 голосов
/ 23 июня 2010

Нет, это очень плохо, элемент управления никогда не должен зависеть от наличия определенного родителя.Сделайте это так же, как это делает любой элемент управления Windows Forms: если случится что-то интересное, что может заинтересовать родителя, вызовите событие:

    public event EventHandler StatusChanged;

    public int Status {
        get { ... }
    }

    protected override void OnClick(EventArgs z_args) {
        // do own stuff
        //...
        var handler = StatusChanged;
        if (handler != null) handler(this, EventArgs.Empty);
    }

Подумайте о том, чтобы поместить код вызова события в частный установщик для Statusсвойство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...