Как добавить обработчик событий в унаследованный элемент управления winform? - PullRequest
0 голосов
/ 15 июля 2009

Мне нужно добавить обработчик событий в унаследованный элемент управления, такой как представление данных, но Visual Studio не позволяет мне. Разве нет способа унаследованного элемента управления запустить базовый обработчик события И унаследованный? в последовательности я указываю?

Ответы [ 2 ]

1 голос
/ 15 июля 2009

Ваш вопрос неясен. Предполагая, что вы пытаетесь обработать событие базового класса в унаследованном элементе управления, вы можете переопределить защищенный виртуальный метод On EventName . В переопределении обязательно вызовите базовый метод, иначе событие не сработает.

Этот метод существует (AFAIK) для каждого события в каждом элементе управления в System.Windows.Forms. Если у наследуемого элемента управления нет этого виртуального метода, вы можете подписаться на вентиляцию в конструкторе.

Например:

class MyButton : Button {
    //First way
    protected override void OnClick(EventArgs e) { 
        base.OnClick(e);    //Without this line, the event won't be fired
        //...
    }


    //Second way
    public MyButton() {
        base.Click += Base_Click;
    }

    void Base_Click(object sender, EventArgs e) {
        //...
    }
}

EDIT

Если вы пытаетесь вызвать событие базового класса, вы можете вызвать эти методы On EventName .

Если базовый класс не имеет такового, единственный способ сделать это - объявить новое событие и добавить обработчик к исходному событию из базового класса, который вызывает ваше новое событие. Обратите внимание, что если у вас есть другой код, который использует событие базового класса, а evnet не virtual и не имеет метода raiser, вам не повезло, если вы не можете декомпилировать базовые классы и выяснить, где событие поднято.

1 голос
/ 15 июля 2009

События в WinForms обычно имеют соответствующий метод «Вкл.». Просто вызовите этот метод, и он вызовет событие. Если вы хотите, например, вызвать «CellClick», вызовите «base.OnCellClick (new DataGridViewCellEventArgs (row, column))».

...