C #: как определить, из какой дочерней формы была нажата кнопка (принадлежащая parentForm)? - PullRequest
0 голосов
/ 25 июля 2011

У меня есть 4 ChildForm (1..4), базовым классом которых является ParentForm.

ParentForm имеет кнопку.

Есть ли способ узнать, из какой ChildForm была нажата кнопка?

Ответы [ 3 ]

0 голосов
/ 25 июля 2011

Да, с небольшим количеством размышлений вы можете сделать это. В пользовательском обработчике событий объект sender для получения типа родителя:

Type ChildFormType = ((Button)sender).Parent.GetType();

Однако необходимость использовать отражение (запрос системы типов) часто является признаком плохого дизайна. Некоторая реализация Шаблон посетителя , где ParentForm в качестве абстрактного accept метода может быть решением.

0 голосов
/ 26 июля 2011

Я понимаю, что у вас есть 4 различных класса для ваших 4 форм, все они получены из ParentForm.Если это так, я бы реализовал метод ButtonClicked следующим образом:

    private void button1_Click(object sender, EventArgs e)
    {
        // part common to all the forms (possibly void)
        specific_button1_Click(sender, e);
        // part common to all the forms (possibly void)
    }

    protected void specific_button1_Click(object sender, EventArgs e)
    {
    }

, а затем переопределил метод specific_button1_Click в производных формах

0 голосов
/ 25 июля 2011

Элементы управления имеют свойство Parent или Page , можете ли вы использовать один из них?

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