日期:2014-05-19  浏览次数:21047 次

窗体继承后,如何在子类窗体中修改父窗体中控件的事件?
请问,
继承了父窗体后,在子类的窗体中,无法修改父窗体中控件的事件。
子类窗体中的,父窗体控件无法修改其属性和添加修改事件。
这该如何解决啊?
谢谢!

------解决方案--------------------
发消息给父窗体
让父窗体自己改
------解决方案--------------------
根两个窗口传值一个道理吧,用委托
------解决方案--------------------
使用代理 
public delegate void SendToForm1();

form2:
private SendToForm1 sendToForm1;

private void button1_Click(object sender, EventArgs e)
{
this.sendToForm1();
}

form1:
Form2 form2 = new From2();
form2.sendToForm1 = new SendToForm1(DealForm2Info);

private void DealForm2Info()
{
//在这里写form2中点了button1后,form1需要做的处理
}

这个例子
------解决方案--------------------
将父窗体的控件设置为保护类型就可以了
如果父窗体的控件已经加了事件,那么试试看以下面的代码是否可以
class ParentFrom : From
{

private void InitializeComponent()
{
// 登陆按钮的事件已经连接到了btnLogin_Click函数
this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click);
}


private void btnLogin_Click(object sender, EventArgs e)
{
// 在这个按钮的逻辑处理因该放入一个函数
login();
}

// 将这个函数标记为虚函数,可以重写
// 继承这个窗口的子类,可以通过重写login函数,实现自己的处理
protected virtual void login()
{
}

}

------解决方案--------------------
可以在父类中声明为虚函数,在子类中进行重写,如果需要,在子类中还可以调用基类的同名函数。