您的位置:首页 > 其它

DevExpress问题积累:DocumentManager问题

2015-10-15 20:40 429 查看
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: