/// <summary> /// 设置图元是否可用 /// </summary> /// <param name="list">遍历过的图元链表</param> /// <param name="graphElement">当前图元</param> /// <param name="eventNode">事件结点</param> /// <param name="enable">图元是否可用</param> protected virtual void ReBindEventNode(List <GraphElement> list, GraphElement graphElement, EventGraphElement eventNode, bool enable) { if (!list.Contains(graphElement)) // 还没有遍历过当前图元 { GraphManager graphManager = data as GraphManager; DataManager dataManager = graphManager.CurrentFlowChartManager.CurrentDataManager; if (graphElement is SlotContainer) // 该图元是插槽容器 { SlotContainer slotContainer = graphElement as SlotContainer; if (!enable && slotContainer.EventNode != null && dataManager.IsConnect(slotContainer.EventNode, slotContainer)) // 不需要更新当前图元的事件结点 { } else { list.Add(slotContainer); slotContainer.Enable = enable; slotContainer.EventNode = eventNode; foreach (GraphElement g in dataManager.GetNextGraphElements(graphElement)) { ReBindEventNode(list, g, eventNode, enable); } } } else if (graphElement is ConnectorContainer) // 该图元是连接线控制点容器 { ConnectorContainer line = graphElement as ConnectorContainer; if (!enable && line.EventNode != null && dataManager.IsConnect(line.EventNode, line)) // 不需要更新当前图元的事件结点 { } else { list.Add(line); line.Enable = enable; line.EventNode = eventNode; foreach (GraphElement g in dataManager.GetNextGraphElements(graphElement)) { ReBindEventNode(list, g, eventNode, enable); } } } } }