Применить одно и то же событие к каждой кнопке проекта в C # - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть проект с 3 формами и 10 пользовательскими элементами управления.Каждый из этих компонентов имеет около 10 кнопок.Я хотел бы использовать событие, чтобы применить стиль, когда они отображаются пользователем.Есть ли способ, которым я могу создать это событие для общего компонента, а затем он будет применен к каждому компоненту автоматически?Потому что я не обязательно в настроении вручную проходить событие «130 кнопок» ^^

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Вы можете использовать рекурсивный метод и вызвать его в своей форме.Он будет проходить через все дочерние элементы управления вашей формы и их дочерние элементы, и если они будут кнопкой, он свяжет их с вашим централизованным методом.

Вот пример с событием Click, но он может применятьсяк чему-либо:

    private void RecursiveClickSubscribe(Control c)
    {
        if (c is Button)
        {
            c.Click += GenericClickHandler;
        }
        foreach (Control child in c.Controls)
        {
            RecursiveClickSubscribe(child);
        }

    }

    private void GenericClickHandler(object sender, EventArgs e)
    {
        // stuff you want to do on every click
    }

    Form myForm; // one of your three forms.
    RecursiveClickSubscribe(MyForm);
0 голосов
/ 20 сентября 2018

Ваш лучший вариант, вероятно, заключался бы в создании подкласса класса кнопок и использовании его в остальной части кода.Отражение во всех ваших формах и пользовательских элементах управления для определения и добавления обработчика событий для каждой кнопки будет дорогостоящим (как с точки зрения времени разработчика, так и времени выполнения).Так как класс Button не запечатан, вы можете легко переопределить метод OnMouseHover () , чтобы обновить кнопку по мере необходимости (обязательно вызовите метод базового класса, прежде чем покинуть переопределение).

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