/// <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);
        }