首页 新闻 会员 周边

winform 窗体继承与事件执行

0
悬赏园豆:20 [已解决问题] 解决于 2012-02-28 23:54

父窗体有个按钮,然后父类和子类都实现按钮的 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();
}
}



starStars的主页 starStars | 初学一级 | 园豆:52
提问于:2012-02-28 18:52
< >
分享
最佳答案
1

事件是可以广播的,就是事件可以有多个执行程序。所以会有点击按钮会有多个程序执行。但是你代码调用的时候却只是调用了子类的方法。所以……

收获园豆:20
小小刀 | 小虾三级 |园豆:1991 | 2012-02-28 22:22

好像button有一个onclick方法吧!很久没有用了!

小小刀 | 园豆:1991 (小虾三级) | 2012-02-28 22:24

@小小刀: PerformClick()模拟按钮点击,这个可以解决问题

starStars | 园豆:52 (初学一级) | 2012-02-28 23:53
其他回答(2)
0

我想,可以使用委托。

穆之霞 | 园豆:197 (初学一级) | 2012-02-28 18:55
0

你这个问题描述的很不清楚。

Firen | 园豆:5385 (大侠五级) | 2012-02-28 19:12

不明白你的意图是什么…

基类btn_click执行了一段逻辑,概括为method1,

子类btn_click执行了另一段逻辑代码,概括为method2,

现在创建个method3,method3先后执行method1和method2,

在TestMethod()里执行method3不就了。

不知道是不是这么回事?

支持(0) 反对(0) Firen | 园豆:5385 (大侠五级) | 2012-02-28 21:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册