Sergey Alexandrovich Kryukov
Обработчик событий-это просто метод. Он становится обработчиком, когда вы добавляете его в список вызовов некоторого экземпляра события.
Поэтому понятие "переопределение" ничем не отличается от переопределения любого другого метода. Метод должен быть виртуальный и производный класс должен иметь достаточный доступ к нему; как правило,, protected
используется модификатор доступа. Только тогда метод может быть переопределен.
В вашем примере кода я не вижу ключевых слов "virtual
" или "abstract
- следовательно, здесь нечего отменять. Чтобы изменить его, вам нужно сделать метод виртуальным,только тогда вы сможете переопределить его.
Если под "переопределением" вы на самом деле имели в виду что-то другое, пожалуйста, уточните; возможно, Я помогу Вам использовать правильный термин для того, что вам нужно, но в этом случае вы должны объяснить свои конечные цели.
[РЕДАКТИРОВАТЬ]
Например,
abstract class MyBaseForm : Form {
internal MyBaseForm() {
// ...
Button.Click =+ ButtonClickHandler;
}
Button Button = new Button;
protected abstract ButtonClickHandler(object sender, EventArgs eventArgs);
}
// ...
class MyForm : MyBaseForm {
protected override ButtonClickHandler(object sender, EventArgs eventArgs) {
MessageBox("Do something");
}
}
Обратите внимание, что делать то же самое с некоторым классом управления и добавлять обработчик событий к тому же событию не имеет практического смысла, потому что после переопределения вы всегда можете использовать альтернативную обработку, не добавляя обработчик событий, а переопределяя уже существующий виртуальный метод, например
OnClick
,
OnPaint
и так далее.
—СА
bernova
Я его меняю :
публичный класс MyPrintDoc : PrintDocument
{
public delegate void MyPrintPageEventHandler(Object sender, PrintPageEventArgs e, string[] arr);
публичное мероприятие MyPrintPageEventHandler PagePrintHandler;
частная строка[] arr;
public MyPrintDoc(string[] iarr)
{
это. arr = iarr;
}
общественные MyPrintDoc()
{ этот.iarr = null; }
защищенная пустота MyOnPrintPage(PrintPageEventArgs args)
{
PagePrintHandler(this, args, this.iarr);
}
}