父窗体有个按钮,然后父类和子类都实现按钮的 click 事件。
运行该窗体,
当点击按钮的时候,两个实现都会执行。
当通过代码触发按钮click的时候,只会走当前类的实现。如何在父类里面通过代码的方式触发事件,让两个实现都走呢?
public partial class BaseForm : Form
{
public BaseForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Base Form event");
}
protected void TestMethod()
{
button1_Click(null, null);// 如何在此处既走父类的Click,又走子类的
Click
}
}
public partial class Form1 : BaseForm
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Sub Form event");
}
private void Form1_Load(object sender, EventArgs e)
{
base.TestMethod();
}
}
事件是可以广播的,就是事件可以有多个执行程序。所以会有点击按钮会有多个程序执行。但是你代码调用的时候却只是调用了子类的方法。所以……
好像button有一个onclick方法吧!很久没有用了!
@小小刀: PerformClick()模拟按钮点击,这个可以解决问题
我想,可以使用委托。
你这个问题描述的很不清楚。
不明白你的意图是什么…
基类btn_click执行了一段逻辑,概括为method1,
子类btn_click执行了另一段逻辑代码,概括为method2,
现在创建个method3,method3先后执行method1和method2,
在TestMethod()里执行method3不就了。
不知道是不是这么回事?