原創|使用教程|編輯:郝浩|2013-05-22 09:23:39.000|閱讀 553 次
概述:FlowChart.NET是一個通用的流程圖控件,提供了用于創建或編輯圖表的直觀的用戶交互模型。本文來了解一下FlowChart.NET中撤消或重做的屬性更改。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
FlowChart.NET中對于撤銷項目屬性的更改不會自動記錄,要啟用撤消屬性更改,您必須明確創建一個ChangeItemCmd實例,并把它添加到歷史隊列。
ChangeItemCmd構造函數需要一個作為參數的項目引用,保存項目初始狀態用以再通過稍后撤銷恢復。在一個或多個項目的屬性分配后調用Execute方法,記錄項目最終的狀態再通過稍后的重做恢復。這樣的話,就可以用一個單一的記錄來保存項目的屬性更改,這個單一的記錄也可以作為單一的操作被撤銷或是重做。
C#
// Save item state ChangeItemCmd propChange = new ChangeItemCmd(diagram.Nodes[0], "Change"); // Change properties ShapeNode shape = (ShapeNode)diagram.Nodes[0]; shape.Text = "new text"; shape.Brush = new SolidBrush(Color.Blue); shape.Shape = Shape.FromId("Ellipse"); // Add to history propChange.Execute();
Visual Basic
' Save item state Dim propChange = New ChangeItemCmd(Diagram.Nodes(0), "Change") ' Change properties Dim shape As ShapeNode = Diagram.Nodes(0) shape.Text = "new text" shape.Brush = New SolidBrush(Color.Blue) shape.Shape = MindFusion.Diagramming.Shape.FromId("Ellipse") ' Add to history propChange.Execute()
如果說想要把幾個項目作為一個操作,需要創建一個CompositeCmd實例,以及通過調用AddSubCmd方法來添加ChangeItemCmd命令到這個復合操作上。
C#
if (diagram.Selection.Nodes.Count == 0)
return;
// Make all changes seem like a single operation by
// putting them in composite Command
CompositeCmd composite = new CompositeCmd(
diagram, "Change selection");
foreach (DiagramNode node in diagram.Selection.Nodes)
{
ShapeNode shape = node as ShapeNode;
if (shape == null)
continue;
// Save item state
ChangeItemCmd propChange = new ChangeItemCmd(shape, "Change");
// Change properties
shape.Text = "new text";
shape.Brush = new SolidBrush(Color.Blue);
// Add to the composite
composite.AddSubCmd(propChange);
}
// Store final state of all contained commands
composite.Execute();
Visual Basic
If diagram.Selection.Nodes.Count = 0 Then
Return
End If
' Make all changes seem like a single operation by
' putting them in composite Command
Dim composite As CompositeCmd = New CompositeCmd( _
diagram, "Change selection")
Dim node As DiagramNode
For Each node In diagram.Selection.Nodes
Dim shape As ShapeNode = CType(node, ShapeNode)
If Not shape Is Nothing Then
' Save item state
Dim propChange As ChangeItemCmd = New ChangeItemCmd(shape, "Change")
' Change properties
shape.Text = "new text"
shape.Brush = New SolidBrush(Color.Blue)
' Add to the composite
composite.AddSubCmd(propChange)
End If
Next
' Store final state of all contained commands
composite.Execute()
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件