原創|使用教程|編輯:郝浩|2013-05-30 14:30:12.000|閱讀 1024 次
概述:本教程展示在FlowChart.NET如何從XML中加載圖數據,以及創建一個對應于圖節點和邊的圖對象。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
本教程展示在業務流程圖控件FlowChart.NET中如何從XML中加載圖數據,以及創建一個對應于圖節點和邊的圖對象。
1、右鍵單擊項目的上下文菜單,選擇添加- >新項目,創建一個新的叫做SampleTree.xml的XML文件,并在下面的窗格中給它添加內容:
XML
<?xml version="1.0" encoding="utf-8" ?> <Project> <Activity Name="Activity 1"> <Activity Name="sub-activity 1"> <Activity Name="sub-activity 1-1" /> <Activity Name="sub-activity 1-2" /> </Activity> <Activity Name="sub-activity 2"> <Activity Name="sub-activity 2-1" /> <Activity Name="sub-activity 2-2" /> <Activity Name="sub-activity 2-3" /> </Activity> <Activity Name="sub-activity 3"> <Activity Name="sub-activity 3-1" /> <Activity Name="sub-activity 3-2" /> </Activity> </Activity> <Activity Name="Activity 2"> <Activity Name="sub-activity 1"> <Activity Name="sub-activity 1-1" /> <Activity Name="sub-activity 1-2" /> <Activity Name="sub-activity 1-3" /> </Activity> <Activity Name="sub-activity 2"> <Activity Name="sub-activity 2-1" /> <Activity Name="sub-activity 2-2" /> </Activity> </Activity> <Activity Name="Activity 3"> <Activity Name="sub-activity 1"> <Activity Name="sub-activity 1-1" /> <Activity Name="sub-activity 1-2" /> <Activity Name="sub-activity 1-3" /> <Activity Name="sub-activity 1-4" /> </Activity> <Activity Name="sub-activity 2" /> <Activity Name="sub-activity 3"> <Activity Name="sub-activity 3-1" /> <Activity Name="sub-activity 3-2" /> </Activity> </Activity> </Project>
2、設置文件的“創建操作”屬性到“內容”,以及那設置“復制輸出”到“如果更新就復制”。
3、覆蓋OnLoad方法。
C#
protected override void OnLoad(EventArgs e) { base.OnLoad(e); }
Visual Basic
Protected Overrides Sub OnLoad(ByVal e As EventArgs) MyBase.OnLoad(e) End Sub
4、添加以下成員到窗口類來保存默認節點大小。
C#
RectangleF nodeBounds = new RectangleF(0, 0, 24, 6); Visual Basic Dim nodeBounds As New RectangleF(0, 0, 24, 6)
5、創建樹的根節點,并調用CreateChildren方法構建樹遞歸:
C#
ShapeNode root = diagram.Factory.CreateShapeNode(nodeBounds); root.Text = "Project"; XmlDocument document = new XmlDocument(); document.Load("SampleTree.xml"); CreateChildren(root, document.SelectSingleNode("Project"));
Visual Basic
Dim root As ShapeNode = diagram.Factory.CreateShapeNode(nodeBounds) root.Text = "Project" Dim document As New XmlDocument() document.Load("SampleTree.xml") CreateChildren(root, document.SelectSingleNode("Project"))
6、如下定義CreateChildren,作為父節點和父XML元素的參數,迭代子XML元素來構建新的層級,通過調用CreateShapeNode和CreateDiagramLink創建一個相應的圖項目。
C#
private void CreateChildren(DiagramNode parentDiagNode, XmlNode parentXmlNode) { foreach (XmlElement element in parentXmlNode.SelectNodes("Activity")) { ShapeNode node = diagram.Factory.CreateShapeNode(nodeBounds); node.Text = element.GetAttribute("Name"); diagram.Factory.CreateDiagramLink(parentDiagNode, node); CreateChildren(node, element); } }
Visual Basic
Private Sub CreateChildren(ByVal parentDiagNode As DiagramNode, ByVal parentXmlNode As XmlNode) For Each element As XmlElement In parentXmlNode.SelectNodes("Activity") Dim node As ShapeNode = diagram.Factory.CreateShapeNode(nodeBounds) node.Text = element.GetAttribute("Name") diagram.Factory.CreateDiagramLink(parentDiagNode, node) CreateChildren(node, element) Next End Sub
7、使用TreeLayout布局來安排圖,添加下面的代碼到OnLoad覆蓋。
C#
TreeLayout layout = new TreeLayout(); layout.Type = TreeLayoutType.Cascading; layout.Direction = TreeLayoutDirections.LeftToRight; layout.LinkStyle = TreeLayoutLinkType.Cascading2; layout.NodeDistance = 3; layout.LevelDistance = -8; // let horizontal positions overlap layout.Arrange(diagram); Visual Basic Dim layout As New TreeLayout() layout.Type = TreeLayoutType.Cascading layout.Direction = TreeLayoutDirections.LeftToRight layout.LinkStyle = TreeLayoutLinkType.Cascading2 layout.NodeDistance = 3 layout.LevelDistance = -8 ' let horizontal positions overlap layout.Arrange(diagram)
8、建立并運行該項目。如果一切順利,你應該看到這種表示的層次結構:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件