MDI父窗体执行子窗体的事件
2012-10-11 21:26 极无宪 阅读(327) 评论(0) 收藏 举报我觉得这里分2种情况。
1、你的所有子窗体都是同一种类型,假设都是SubWinForm类,那么在你的SubWinForm类型中实现对应的Add或者Edit方法,然后要解决的问题,就是在点击按钮的时候得到当前活动的窗体引用,这很简单,通过Form类型的ActiveMdiChild属性就能得到,因此可以通过如下示例代码处理:
(this.ActiveMdiChild as SubWinForm).Add()
2、如果你的子窗体类型不止一种窗体类,比如有SubWinFormA、SubWinFormB 2种类型,就无法直接通过第一种方式处理,但是可以变通一下,虽然他们是不同类型,但是都有部分同样的方法,比如Add、Edit,因此可以定义一个接口,抽象出这些共同的方法,然后所有需要的子窗体类都继承和实现这个接口,就可以使用第一种方法处理了。
比如我们定义一个接口:
public interface IDataProcess
{
void Add();
void Edit();
}
然后SubWinFormA和SubWinFormB都实现这个接口:
public class SubWinFormA : Form, IDataProcess
{
//实现针对SubWinFormA中的Add和Edit方法......
}
public class SubWinFormB : Form, IDataProcess
{
//实现针对SubWinFormB中的Add和Edit方法......
}
然后就可以利用第一种方法进行处理了,比如在ToolStripAdd的事件处理方法中:
IDataProcess dataProcess = this.ActiveMdiChild as IDataProcess;
if (dataProcess == null)
{
MessageBox.Show("对不起,当前活动窗体不支持新增操作");
return;
}
dataProcess.Add();
浙公网安备 33010602011771号