The click event is based on delegates - a list of method pointers. So, what's happening here, is you're attaching multiple event handlers to a single event - two messages displayed.
Top of my head [i.e. untested code]:
Form1:
Code:
private void btnClick(object sender, EventArgs e) {
this.OnButtonClicked(sender, e);
}
protected virtual void OnButtonClicked(object sender, EventArgs e) {
MessageBox.Show("Form 1");
}
Form2:
Code:
protected override void OnButtonClicked(object sender, EventArgs e) {
MessageBox.Show("Form 1");
}