DevExpress 版本:14.2
目的:创建可拖拽的控件浏览视图
过程:
1、创建DocumentManager控件:DevExpress.XtraBars.Docking2010.DocumentManager DmUvw;
2、创建在DocumentManager控件中加入WidgetView:DevExpress.XtraBars.Docking2010.Views.Widget.WidgetView widgetView1;
3、通过代码动态添加Document
/// <summary>
/// 添加Document
/// </summary>
/// <param name="doName"></param>
public void AddDocument(string doName)
{
Document bd = new Document();
bd.Caption = doName;
DmUvw.View.Documents.Add(bd);
}
事件:其中UcTemp是自定义控件
DmUvw.View.QueryControl += View_QueryControl;
private void View_QueryControl(object sender, QueryControlEventArgs e)
{
string tempVmeName = e.Document.Caption;
UcTemp ucTemp = new UcTemp(tempVmeName);
e.Control = ucTemp;
}
4、通过代码删除Document
/// <summary>
/// 删除Document
/// </summary>
/// <param name="doName"></param>
public void DeleteDocument(string doName)
{
foreach (BaseDocument bd in DmUvw.View.Documents)
{
if (bd.Caption == doName)
{
DmUvw.View.Documents.Remove(bd);
return;
}
}
}
问题:通过代码删除Document经常出现问题,删除之后界面未刷新,例如加载5个Document。逐一进行删除,偶尔出现一、两个Document实际已删除,但界面显示未删除的问题。
解决办法:多次试验,最终偶发发现解决办法。
1、在widgetView1中增加StackGroup:DevExpress.XtraBars.Docking2010.Views.Widget.StackGroup stackGroup1;
2、增加时将每个Document放入stackGroup1。
/// <summary>
/// 添加Document
/// </summary>
/// <param name="doName"></param>
public void AddDocument(string doName)
{
Document bd = new Document();
bd.Caption = doName;
DmUvw.View.Documents.Add(bd);
stackGroup1.Items.Add(bd);
}
来源:https://www.cnblogs.com/starpnd/p/4883610.html