// Base class: this.Load += new System.EventHandler(this.MyBaseForm_Load); ... private void MyBaseForm_Load(object sender, System.EventArgs e) { MessageBox.Show("Base Load"); } // Derived class: this.Load += new System.EventHandler(this.Form1_Load); ... private void Form1_Load(object sender, System.EventArgs e) { MessageBox.Show("Derived Load"); }To alter the normal behavior, you could do this:
// Base class: this.Load += new System.EventHandler(this.MyBaseForm_Load); ... protected virtual void MyBaseForm_Load(object sender, System.EventArgs e) { MessageBox.Show("Base Load"); } // Derived class (note that I've removed the delegate): protected override void MyBaseForm_Load(object sender, System.EventArgs e) { MessageBox.Show("Derived Load"); base.MyBaseForm_Load (sender, e); }So, it's still as flexible as you need it to be.