C# 将一个控件的效果转移给另一个控件

法1.清除原本控件的效果,重新在新的控件中写一遍
//读配置文件
                string quotaTreePositon = Function.ProfileString("界面设置", "定额树位置", "右");

                // 如果配置为右,保持添加
                if (quotaTreePositon != "左")
                {
                    panelQuotaSearch.ControlContainer.Controls.Add(control);
                }
                //如果配置为左,清除控件
                if (quotaTreePositon == "左")
                {
                    panelQuotaSearch.ControlContainer.Controls.Clear();
                    
                }

配置文件读取C# 读取ini配置文件-CSDN博客

法2.想要转移效果,实际上只需要修改内容的父节点

找父容器的方法:加断点,添加监视,找parent节点

control的父容器是DevExpress.XtraBars.Docking.ControlContainer

因为加了一个if语句,根本没有把儿子加进父容器,所以这里不用先将儿子从父容器中移除。

去找到新的父容器,在这里把儿子直接放进新的父容器。

我的代码新旧容器分布:

旧容器

新容器是个group,在AlertManager中,但是旧容器是CostUIProject

所以在旧容器中加监视是看不见这个Group的

打通。

查找左右引用,找new关键字

跳转到new的地方,写get暴露函数

AlertManager alertManager = new AlertManager();
        //11930在创建处传递
        public AlertManager AlertManager
        {
            get { return alertManager; }
            set { }
        }

使用处,先声明:

AlertManager alertManager = null;

在navBarControl的group中增加control控件:

navBarGroup1.ControlContainer.Controls.Add(button1);//语法

要访问Group就要把Group暴露出来

在AlertManager里面写一个get函数

  NavBarGroup quotaGroup;
        public NavBarGroup getGroup()
        {
            return quotaGroup;
        }

在原本的函数中给quotaGroup赋值

则在中就可以调用getGroup函数了

alertManager.getGroup();

完整法2代码

//读配置文件
                string quotaTreePositon = Function.ProfileString("界面设置", "定额树位置", "右");

                // 如果配置为右,保持添加
                if (quotaTreePositon != "左")
                {
                    panelQuotaSearch.ControlContainer.Controls.Add(control);
                }
                //如果配置为左,清除控件
                if (quotaTreePositon == "左")
                {
                    //要修改它的父节点实现转移效果
                    NavBarGroup quotaGroup = alertManager.getGroup();
                    quotaGroup.ControlContainer.Controls.Add(control);
                    
                    //这种写法把所有定额查询的控件都清除完了
                    panelQuotaSearch.ControlContainer.Controls.Clear();
                }

报错显示

原因是这个container是null

quotaGroup.ControlContainer = new NavBarGroupControlContainer();

改完之后的完整代码:

//读配置文件
                string quotaTreePositon = Function.ProfileString("界面设置", "定额树位置", "右");

                // 如果配置为右,保持添加
                if (quotaTreePositon != "左")
                {
                    panelQuotaSearch.ControlContainer.Controls.Add(control);
                }
                //如果配置为左,清除控件
                if (quotaTreePositon == "左")
                {
                    //要修改它的父节点实现转移效果
                    NavBarGroup quotaGroup = alertManager.getGroup();
                    quotaGroup.ControlContainer = new NavBarGroupControlContainer();
                    quotaGroup.ControlContainer.Controls.Add(control);
                    
                    //这种写法把所有定额查询的控件都清除完了
                    panelQuotaSearch.ControlContainer.Controls.Clear();
                }

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值