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();
展开
 我来答
freeeeeewind
推荐于2016-02-26 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1351万
展开全部

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);
}
追问
果然是大神,问题到了你那里就迎刃而解,
谢谢!无比佩服
追答
过奖(汗……),问题解决就好
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式