예제 #1
0
        /// <summary>
        /// 谐波方案数据加载
        /// </summary>
        public void Load()
        {
            string  ErrorString = "";
            XmlNode _XmlNode    = CLDC_DataCore.DataBase.clsXmlControl.LoadXml(System.Windows.Forms.Application.StartupPath + CLDC_DataCore.Const.Variable.CONST_XIEBO, out ErrorString);

            XieBoCol.Clear();
            _FaName.Clear();
            if (ErrorString != "")     //有错误,一般存在的错误在于未找到该谐波配置文件,未找到则初始化一个空的谐波文件
            {
                _XmlNode = CLDC_DataCore.DataBase.clsXmlControl.CreateXmlNode("XieBo");
                CLDC_DataCore.DataBase.clsXmlControl.SaveXml(_XmlNode, System.Windows.Forms.Application.StartupPath + CLDC_DataCore.Const.Variable.CONST_XIEBO);
            }

            for (int i = 0; i < _XmlNode.ChildNodes.Count; i++)
            {
                _FaName.Add(_XmlNode.ChildNodes[i].Attributes[0].Value);                               //获取方案名称

                List <CLDC_DataCore.Struct.StXieBo> Items = new List <CLDC_DataCore.Struct.StXieBo>(); //方案项目内容

                for (int j = 0; j < _XmlNode.ChildNodes[i].ChildNodes.Count; j++)                      //进入第二层XML节点
                {
                    CLDC_DataCore.Struct.StXieBo Item = new CLDC_DataCore.Struct.StXieBo();

                    XmlNode _ChildNode = _XmlNode.ChildNodes[i].ChildNodes[j];                                    //这一个节点是原件

                    Item.YuanJian = (CLDC_Comm.Enum.Cus_PowerYuanJian) int.Parse(_ChildNode.Attributes[0].Value); //原件

                    for (int z = 0; z < _ChildNode.ChildNodes.Count; z++)                                         //进入第三层XML节点
                    {
                        XmlNode _CChildNode = _ChildNode.ChildNodes[z];                                           //这一个节点标志是电压还是电流

                        Item.IsUb = _CChildNode.Attributes[0].Value.ToString().ToLower() == "u" ? true : false;

                        for (int w = 0; w < _CChildNode.ChildNodes.Count; w++)                        //进入第四层XML节点
                        {
                            Item.Num    = int.Parse(_CChildNode.ChildNodes[w].Attributes[0].Value);   //次数
                            Item.Extent = float.Parse(_CChildNode.ChildNodes[w].Attributes[1].Value); //幅度
                            Item.Xw     = float.Parse(_CChildNode.ChildNodes[w].Attributes[2].Value); //谐波相位

                            Items.Add(Item.Clone());                                                  //加入一个谐波项目
                        }
                    }
                }

                XieBoCol.Add(_FaName[_FaName.Count - 1], Items);        //加入一个谐波方案
            }
        }
        /// <summary>
        /// 获取项目列表,作临时存储用
        /// </summary>
        /// <param name="IsUb"></param>
        /// <returns></returns>
        private List <CLDC_DataCore.Struct.StXieBo> GetXieBoPrjList(RadioButton ControlItem, bool IsUb)
        {
            List <CLDC_DataCore.Struct.StXieBo> Items = new List <CLDC_DataCore.Struct.StXieBo>();

            CLDC_Comm.Enum.Cus_PowerYuanJian _Yuan = new CLDC_Comm.Enum.Cus_PowerYuanJian();


            if (ControlItem.Name.ToLower().IndexOf("a") >= 0)
            {
                _Yuan = CLDC_Comm.Enum.Cus_PowerYuanJian.A;
            }
            else if (ControlItem.Name.ToLower().IndexOf("b") >= 0)
            {
                _Yuan = CLDC_Comm.Enum.Cus_PowerYuanJian.B;
            }
            else if (ControlItem.Name.ToLower().IndexOf("c") >= 0)
            {
                _Yuan = CLDC_Comm.Enum.Cus_PowerYuanJian.C;
            }
            else
            {
                return(Items);
            }

            DataGridView _DgvData = IsUb ? Dgv_DataU : Dgv_DataI;

            for (int i = 0; i < _DgvData.Rows.Count; i++)
            {
                CLDC_DataCore.Struct.StXieBo Item = new CLDC_DataCore.Struct.StXieBo();
                Item.IsUb     = IsUb;                                         //是不是电压
                Item.Num      = int.Parse(_DgvData[0, i].Value.ToString());   //谐波次数
                Item.YuanJian = _Yuan;                                        //相元
                Item.Extent   = float.Parse(_DgvData[1, i].Value.ToString()); //幅度
                Item.Xw       = float.Parse(_DgvData[2, i].Value.ToString()); //相位
                Items.Add(Item);
            }

            return(Items);
        }