自定义控件-MDI子窗体-MDI父窗体的三层引用(C#)

VC#中经常出现多个模块之间属性传递的问题,我最近就遇见一个MDI下的自定义控件的引用问题

问题描述
1,工程是一个MDI窗体,父窗体中有多个MDI子窗体和工具栏菜单
2,有一个自定义控件,是属于MDI子窗体的,比如说这个MDI子窗体叫A,这个自定义控件叫a
3,想在a中调用MDI父窗体的一个菜单按钮事件
以上是我遇到的问题,最后给出解决方案共享

方案如下:

1添加一个全局的属性 ,也就是在A上(mdi窗体)

 

1  MDIParent mdiFrame  =   null ;   
2  public  fomCustomer(MDIParent m)   
3  {   
4      mdiFrame  =  m;  
5 

 

2,加载自定义控件

 

usCustomerQuery CustomerQuery  =   new  usCustomerQuery(mdiFrame); // 注意这里加载了属性mdiframe   
CustomerQuery.Parent  =   this ;   
CustomerQuery.Dock 
=  DockStyle.Fill;   
CustomerQuery.Show();   

 

3,自定义控件的初始化,也就是属性传递

 

1  public  MDIParent mdi  =   null ;   
2  public  usCustomerQuery(MDIParent m)   
3  {   
4      InitializeComponent();   
5      mdi  =  m; // 这里,我们就可以用Mdi变量引用父窗体的所有函数了   
6  }  
7 

 

4,引用

 

1  private   void  pbox_Return_Click( object  sender, EventArgs e)   
2  {   
3       if  (mdi  !=   null )   
4         mdi.NavMenuItem_Click(sender,e); // 引用了父窗体中NavMenuItem菜单的处理方法   
5  }  
6 

 

总结:
这里是MDI父-MDI子-MDI子中的自定义控件,这三层引用。由于都是动态引用,造成MDI父的方法不能被MDI子中自定义控件直接引用,所以要通过一个共同的属性来传递,这个属性也可以理解为C++中的指针或者句柄。刚用C#的确有点不习惯,好在是解决了。呵呵

 

转载于:https://www.cnblogs.com/lifw/articles/1609356.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值