DevExpressWinForm DiagramControl显示根节点到当前节点路径信息
int nDestiTei = int.Parse(barEditItem1.EditValue.ToString());
var shape = diagramControl.Items.FirstOrDefault(item => item.DataContext is Topo && ((Topo)item.DataContext).Tei == nDestiTei);
if (shape != null)
{
diagramControl.SelectItem(shape, DevExpress.Diagram.Core.ModifySelectionMode.ReplaceSelection);
diagramControl.BringSelectionIntoView(DevExpress.Diagram.Core.BringIntoViewMode.ShowAll);
var listOfParentItems = new List<DiagramItem>();
FindParentItems(shape, listOfParentItems);
String strNodePath = "";
for (int i = listOfParentItems.Count - 1; i >= 0; i--)
{
strNodePath += ((Topo)listOfParentItems[i].DataContext).Tei + "->";
}
strNodePath += nDestiTei.ToString();
}
public void FindParentItems(DiagramItem item, List<DiagramItem> parentItems)
{
foreach (var parent in item.IncomingConnectors.Select(connector => connector.BeginItem))
{
parentItems.Add((DiagramItem)parent);
FindParentItems((DiagramItem)parent, parentItems);
}
}
public class Topo
{
/// <summary>
/// 节点地址
/// </summary>
public string NodeAddress { get; set; }
/// <summary>
/// 层级
/// </summary>
public int Layer { get; set; }
/// <summary>
/// 父节点Tei
/// </summary>
public int FatherTei { get; set; }
// <summary>
/// 本节点Tei
/// </summary>
public int Tei { get; set; }
// <summary>
/// 类型
/// </summary>
public string Type { get; set; }
}