法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();
}