/// <summary> /// 删除节点 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void 除节点ToolStripMenuItem_Click(object sender, EventArgs e) { if (iSelectedControlNow != null) { IDialoguePointID iDialoguePointID = iSelectedControlNow as IDialoguePointID; Control parentControl = iSelectedControlNow.GetParent(); if (iDialoguePointID.GetType().Equals(typeof(DialogueConditionControl))) { FlowLayoutPanel_Main.Controls.Remove(parentControl); iSelectedControlNow = null; } else { DialogueConditionControl dialogueConditionControl = parentControl.Controls.OfType <DialogueConditionControl>().FirstOrDefault(); if (dialogueConditionControl != null) { IDialoguePointID parentIDialoguePointID = GetParentDialoguePointID(iDialoguePointID, dialogueConditionControl); if (parentIDialoguePointID != null) { parentIDialoguePointID.RemovNextPointID(iDialoguePointID); RemoveDialoguePointIDControl(parentControl, iDialoguePointID); List <Control> tagControlList = (parentIDialoguePointID as Control).Tag as List <Control>; if (tagControlList != null) { tagControlList.Remove(iDialoguePointID as Control); } //移除所有子节点 iSelectedControlNow = null; ResetControlRect(parentControl); } } } } }
/// <summary> /// 监听控件被选择变化 /// </summary> /// <param name="iSelectedControl"></param> private void ListenControlSelected(ISelectedControl iSelectedControl) { if (iSelectedControlNow != null) { iSelectedControlNow.NoSelectedControl(); } iSelectedControlNow = iSelectedControl; }
/// <summary> /// 鼠标点击主界面 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FlowLayoutPanel_Main_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (iSelectedControlNow != null) { iSelectedControlNow.NoSelectedControl(); } iSelectedControlNow = null; } }
/// <summary> /// 监听展开收起变化 /// </summary> /// <param name="iOpenStop">对象</param> /// <param name="state">当前状态(需要改变状态)</param> private void AddListenOpenStop(IOpenStop iOpenStop, bool state) { ISelectedControl targetSelectedContrl = iOpenStop as ISelectedControl; if (targetSelectedContrl != null) { if (state) { iOpenStop.StopControl(new Point(0, 0)); } else { iOpenStop.OpenControl(new Point(0, 0)); } ResetControlRect(targetSelectedContrl.GetParent()); } }
/// <summary> /// 将选择的控件移动到父控件指定位置以显示控件 /// </summary> /// <param name="panel">选择显示的控件</param> private void ShowSearchPanel(Panel panel) { if (panel != null) { int locationY = panel.Location.Y; int allHeight = FlowLayoutPanel_Main.Size.Height; int windowHeigth = Panel_Main.Size.Height; float bili = (float)locationY / (float)allHeight; Panel_Main.VerticalScroll.Value = (int)(Panel_Main.VerticalScroll.Maximum * bili); Panel_Main.VerticalScroll.Value = (int)(Panel_Main.VerticalScroll.Maximum * bili); DialogueConditionControl dialogueConditionControl = panel.Controls.OfType <DialogueConditionControl>().FirstOrDefault(); if (dialogueConditionControl != null) { if (iSelectedControlNow != null) { iSelectedControlNow.NoSelectedControl(); } dialogueConditionControl.SelectedControl(); iSelectedControlNow = dialogueConditionControl; } } }
/// <summary> /// 添加一个子节点 /// </summary> /// <param name="iSelectedControlNow">要添加子节点的节点</param> private DialoguePointControl AddNewChildNode(ISelectedControl iSelectedControlNow, DialogueValue dialogueValue = null, bool updateControl = true) { IDialoguePointID iDialoguePointID = iSelectedControlNow as IDialoguePointID; if (iDialoguePointID.GetType().Equals(typeof(DialogueConditionControl)))//顶层节点(关系关系)只能添加一个子节点(数据节点) { if (iDialoguePointID.GetDialogueNextPointID.Length > 0) { return(null); } } if (iDialoguePointID != null) { DialoguePointControl dialoguePointControl = new DialoguePointControl(dialogueValue); dialoguePointControl.Size = dialoguePointControl.StopSize; dialoguePointControl.SetListenControlSelected(ListenControlSelected); dialoguePointControl.SetLiestenOpenStop(AddListenOpenStop); dialoguePointControl.Tag = new List <Control>(); Control iSelectedControl = iSelectedControlNow as Control; List <Control> childControl = iSelectedControl.Tag as List <Control>; childControl.Add(dialoguePointControl); Control parentControl = iSelectedControlNow.GetParent(); parentControl.Controls.Add(dialoguePointControl); iDialoguePointID.AddNextPointID(dialoguePointControl); if (updateControl) { ResetControlRect(parentControl); } if (searchNodeForm != null) { searchNodeForm.NodeChanged = true; } return(dialoguePointControl); } return(null); }