c# 用户自定义控件 方法
主窗体FrmMain,运行时动态添加用户控件CtrlA,CtrlA上有一个Button和一个DataGridView,还有一个公用方法M();点击Button,弹出子窗体...
主窗体FrmMain,运行时动态添加用户控件CtrlA,CtrlA上有一个Button和一个DataGridView,还有一个公用方法M();
点击Button,弹出子窗体FrmChild;
怎样在FrmChild里调用M()方法?
老师你好,你的回答解决了我的问题,但是还有一点区别:
CtrlA里面有好几个Button,每个都要打开不同的子窗体。
为了方便,我定义了一个公用方法OpenChild,用来打开不同的子窗体
OpenChild(Type type)
{
Form frm=(Form)Acivator.CreateInstance(type);
frm.ShowDialog(this);
}
CtrlA里面的每个Button事件都掉用此方法
OpenChild(typeof(FrmChild));
在这种情况下,我怎么用你说的
FrmChild f=new FrmChild(this);
f.Show(); 展开
点击Button,弹出子窗体FrmChild;
怎样在FrmChild里调用M()方法?
老师你好,你的回答解决了我的问题,但是还有一点区别:
CtrlA里面有好几个Button,每个都要打开不同的子窗体。
为了方便,我定义了一个公用方法OpenChild,用来打开不同的子窗体
OpenChild(Type type)
{
Form frm=(Form)Acivator.CreateInstance(type);
frm.ShowDialog(this);
}
CtrlA里面的每个Button事件都掉用此方法
OpenChild(typeof(FrmChild));
在这种情况下,我怎么用你说的
FrmChild f=new FrmChild(this);
f.Show(); 展开
展开全部
1)在FrmChild中
……
public partial class FrmChild : Form
{
private CtrlA m_ctrl;
//添加一个新的构造函数,原来的构造函数保留
public FrmChild(CtrlA ctrl) : this( )
{
this.m_ctrl = ctrl;
}
//假设FrmChild上有一个按钮button1,点击button1后,调用CtrlA.M( )
private void button1_Click(object sender, EventArgs e)
{
this.m_ctrl.M( );
}
}
2)在控件CtrlA中,点击按钮后显示子窗体FrmChild的代码如下
FrmChild f = new FrmChild(this); //注意:在CtrlA控件中,this是CtrlA的实例!
f.Show( );
======补充回答=========
OpenChild(Type type)
{
Form frm=(Form)Acivator.CreateInstance(type, new object[ ]{this} );
frm.ShowDialog(this);
}
追问
果然是大神,问题到了你那里就迎刃而解,
谢谢!无比佩服
追答
过奖(汗……),问题解决就好
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询