/// <summary>
 /// 移动多功能项目
 /// </summary>
 /// <param name="i">需要移动到的列表位置</param>
 /// <param name="Item">项目结构体</param>
 public void Move(int i, StPlan_Dgn Item)
 {
     i = i < 0 ? 0 : i;
     i = i >= _LstDgn.Count ? _LstDgn.Count - 1 : i;
     this.Remove(Item);
     _LstDgn.Insert(i, Item);
     return;
 }
 /// <summary>
 /// 根据项目移除
 /// </summary>
 /// <param name="Item">项目结构体</param>
 public void Remove(StPlan_Dgn Item)
 {
     if (!_LstDgn.Contains(Item))
     {
         return;
     }
     _LstDgn.Remove(Item);
     return;
 }
        /// <summary>
        /// 增加一个新的多功能方案项目
        /// </summary>
        /// <param name="PrjID">项目ID号</param>
        /// <param name="PrjName">项目名称</param>
        /// <param name="PrjOutPut">源输出参数(方向|元件|电压|电流|功率因素)</param>
        /// <param name="PrjParm">检定参数</param>
        /// <returns></returns>
        public bool Add(string PrjID, string PrjName, string PrjOutPut, string PrjParm)
        {
            StPlan_Dgn _Item = new StPlan_Dgn();

            _Item.DgnPrjID     = PrjID;
            _Item.DgnPrjName   = PrjName;
            _Item.OutPramerter = new StPowerPramerter();
            _Item.OutPramerter.Split(PrjOutPut);
            _Item.PrjParm = PrjParm;
            if (_LstDgn.Contains(_Item))
            {
                return(false);
            }
            _LstDgn.Add(_Item);
            return(true);
        }
        /// <summary>
        /// 加载多功能方案
        /// </summary>
        private void Load()
        {
            _LstDgn = new List <StPlan_Dgn>();
            string  _ErrString = "";
            XmlNode _XmlNode   = clsXmlControl.LoadXml(_FAPath, out _ErrString);

            if (_ErrString != "")
            {
                return;
            }
            int intPrjID = 0;

            for (int _i = 0; _i < _XmlNode.ChildNodes.Count; _i++)
            {
                StPlan_Dgn _Item = new StPlan_Dgn();
                _Item.DgnPrjID     = _XmlNode.ChildNodes[_i].Attributes["PrjID"].Value;
                _Item.DgnPrjName   = _XmlNode.ChildNodes[_i].Attributes["PrjName"].Value;
                _Item.OutPramerter = new StPowerPramerter();
                _Item.OutPramerter.Split(_XmlNode.ChildNodes[_i].Attributes["PrjOutPut"].Value);
                _Item.PrjParm = _XmlNode.ChildNodes[_i].Attributes["PrjParameter"].Value;

                _LstDgn.Add(_Item);

                #region //特别处理时段投切,四个方向,为了改动少但要展示为2级节点
                intPrjID = int.Parse(_Item.DgnPrjID);
                if (intPrjID == (int)Cus_DgnItem.时段投切)
                {
                    string[] _PrjParm = _Item.PrjParm.Split('|');

                    if (_PrjParm != null && _PrjParm.Length > 1)
                    {
                        int _PrjParmLength = _PrjParm.Length;
                        if (_PrjParm[_PrjParmLength - 1].Length == 4)
                        {
                            if (_PrjParm[_PrjParmLength - 1][1] == '1')
                            {
                                StPlan_Dgn _ItemCopy = new StPlan_Dgn();
                                _ItemCopy            = _Item;
                                _ItemCopy.DgnPrjID   = ((int)Cus_DgnItem.反向有功时段投切).ToString("000");
                                _ItemCopy.DgnPrjName = Cus_DgnItem.反向有功时段投切.ToString();
                                _LstDgn.Add(_ItemCopy);
                            }
                            if (_PrjParm[_PrjParmLength - 1][2] == '1')
                            {
                                StPlan_Dgn _ItemCopy = new StPlan_Dgn();
                                _ItemCopy            = _Item;
                                _ItemCopy.DgnPrjID   = ((int)Cus_DgnItem.正向无功时段投切).ToString("000");
                                _ItemCopy.DgnPrjName = Cus_DgnItem.正向无功时段投切.ToString();
                                _LstDgn.Add(_ItemCopy);
                            }
                            if (_PrjParm[_PrjParmLength - 1][3] == '1')
                            {
                                StPlan_Dgn _ItemCopy = new StPlan_Dgn();
                                _ItemCopy            = _Item;
                                _ItemCopy.DgnPrjID   = ((int)Cus_DgnItem.反向无功时段投切).ToString("000");
                                _ItemCopy.DgnPrjName = Cus_DgnItem.反向无功时段投切.ToString();
                                _LstDgn.Add(_ItemCopy);
                            }
                        }
                    }
                }
                else if (intPrjID == (int)Cus_DgnItem.计度器示值组合误差)
                {
                    string[] _PrjParm = _Item.PrjParm.Split('|');

                    if (_PrjParm != null && _PrjParm.Length > 1)
                    {
                        int _PrjParmLength = _PrjParm.Length;
                        if (_PrjParm[_PrjParmLength - 1].Length == 4)
                        {
                            if (_PrjParm[_PrjParmLength - 1][1] == '1')
                            {
                                StPlan_Dgn _ItemCopy = new StPlan_Dgn();
                                _ItemCopy            = _Item;
                                _ItemCopy.DgnPrjID   = ((int)Cus_DgnItem.反向有功计度器示值组合误差).ToString("000");
                                _ItemCopy.DgnPrjName = Cus_DgnItem.反向有功计度器示值组合误差.ToString();
                                _LstDgn.Add(_ItemCopy);
                            }
                            if (_PrjParm[_PrjParmLength - 1][2] == '1')
                            {
                                StPlan_Dgn _ItemCopy = new StPlan_Dgn();
                                _ItemCopy            = _Item;
                                _ItemCopy.DgnPrjID   = ((int)Cus_DgnItem.正向无功计度器示值组合误差).ToString("000");
                                _ItemCopy.DgnPrjName = Cus_DgnItem.正向无功计度器示值组合误差.ToString();
                                _LstDgn.Add(_ItemCopy);
                            }
                            if (_PrjParm[_PrjParmLength - 1][3] == '1')
                            {
                                StPlan_Dgn _ItemCopy = new StPlan_Dgn();
                                _ItemCopy            = _Item;
                                _ItemCopy.DgnPrjID   = ((int)Cus_DgnItem.反向无功计度器示值组合误差).ToString("000");
                                _ItemCopy.DgnPrjName = Cus_DgnItem.反向无功计度器示值组合误差.ToString();
                                _LstDgn.Add(_ItemCopy);
                            }
                        }
                    }
                }
                else if (intPrjID == (int)Cus_DgnItem.费率时段示值误差)
                {
                    string[] _PrjParm = _Item.PrjParm.Split('|');

                    if (_PrjParm != null && _PrjParm.Length > 1)
                    {
                        int _PrjParmLength = _PrjParm.Length;
                        if (_PrjParm[_PrjParmLength - 1].Length == 4)
                        {
                            if (_PrjParm[_PrjParmLength - 1][1] == '1')
                            {
                                StPlan_Dgn _ItemCopy = new StPlan_Dgn();
                                _ItemCopy            = _Item;
                                _ItemCopy.DgnPrjID   = ((int)Cus_DgnItem.反向有功费率时段示值误差).ToString("000");
                                _ItemCopy.DgnPrjName = Cus_DgnItem.反向有功费率时段示值误差.ToString();
                                _LstDgn.Add(_ItemCopy);
                            }
                            if (_PrjParm[_PrjParmLength - 1][2] == '1')
                            {
                                StPlan_Dgn _ItemCopy = new StPlan_Dgn();
                                _ItemCopy            = _Item;
                                _ItemCopy.DgnPrjID   = ((int)Cus_DgnItem.正向无功费率时段示值误差).ToString("000");
                                _ItemCopy.DgnPrjName = Cus_DgnItem.正向无功费率时段示值误差.ToString();
                                _LstDgn.Add(_ItemCopy);
                            }
                            if (_PrjParm[_PrjParmLength - 1][3] == '1')
                            {
                                StPlan_Dgn _ItemCopy = new StPlan_Dgn();
                                _ItemCopy            = _Item;
                                _ItemCopy.DgnPrjID   = ((int)Cus_DgnItem.反向无功费率时段示值误差).ToString("000");
                                _ItemCopy.DgnPrjName = Cus_DgnItem.反向无功费率时段示值误差.ToString();
                                _LstDgn.Add(_ItemCopy);
                            }
                        }
                    }
                }
                #endregion
            }
            return;
        }