private void EditBtn_Click(object sender, EventArgs e)
 {
     try
     {
         if (PassiveChargePerUnits.SelectedItems.Count == 1)
         {
             ListViewItem     li            = PassiveChargePerUnits.SelectedItems[0];
             byte[]           index         = GXDLMSTranslator.HexToBytes(li.SubItems[0].Text);
             Int16            chargePerUnit = Int16.Parse(li.SubItems[1].Text);
             GXDLMSCharge     target        = Target as GXDLMSCharge;
             GXChargeTableDlg dlg           = new GXChargeTableDlg(index, chargePerUnit, false);
             if (dlg.ShowDialog(this) == DialogResult.OK)
             {
                 GXChargeTable t = (GXChargeTable)li.Tag;
                 t.Index             = GXDLMSTranslator.ToHex(dlg.Index);
                 t.ChargePerUnit     = dlg.ChargePerUnit;
                 li.SubItems[0].Text = t.Index;
                 li.SubItems[1].Text = dlg.ChargePerUnit.ToString();
                 errorProvider1.SetError(PassiveChargePerUnits, Properties.Resources.ValueChangedTxt);
                 Target.UpdateDirty(6, target.UnitChargePassive.ChargeTables);
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(this, ex.Message, "Error",
                         MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
 private void RemoveBtn_Click(object sender, EventArgs e)
 {
     try
     {
         if (PassiveChargePerUnits.SelectedItems.Count != 0)
         {
             GXDLMSCharge         target = Target as GXDLMSCharge;
             List <GXChargeTable> list   = new List <GXChargeTable>();
             if (target.UnitChargePassive.ChargeTables != null)
             {
                 list.AddRange(target.UnitChargePassive.ChargeTables);
             }
             while (PassiveChargePerUnits.SelectedItems.Count != 0)
             {
                 ListViewItem  li   = PassiveChargePerUnits.SelectedItems[0];
                 GXChargeTable item = (GXChargeTable)li.Tag;
                 list.Remove(item);
                 PassiveChargePerUnits.Items.Remove(li);
                 errorProvider1.SetError(PassiveChargePerUnits, Properties.Resources.ValueChangedTxt);
                 Target.UpdateDirty(6, target.UnitChargePassive.ChargeTables);
             }
             target.UnitChargePassive.ChargeTables = list.ToArray();
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
 private void AddBtn_Click(object sender, EventArgs e)
 {
     try
     {
         GXDLMSCharge     target = Target as GXDLMSCharge;
         GXChargeTableDlg dlg    = new GXChargeTableDlg(null, 0, false);
         if (dlg.ShowDialog(this) == DialogResult.OK)
         {
             List <GXChargeTable> list = new List <GXChargeTable>();
             if (target.UnitChargePassive.ChargeTables != null)
             {
                 list.AddRange(target.UnitChargePassive.ChargeTables);
             }
             GXChargeTable t = new GXChargeTable();
             t.Index         = GXDLMSTranslator.ToHex(dlg.Index);
             t.ChargePerUnit = dlg.ChargePerUnit;
             ListViewItem li = new ListViewItem(t.Index);
             li.Tag = t;
             li.SubItems.Add(t.ChargePerUnit.ToString());
             list.Add(t);
             target.UnitChargePassive.ChargeTables = list.ToArray();
             PassiveChargePerUnits.Items.Add(li);
             errorProvider1.SetError(PassiveChargePerUnits, Properties.Resources.ValueChangedTxt);
             Target.UpdateDirty(6, target.UnitChargePassive.ChargeTables);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(this, ex.Message, "Error",
                         MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
        public void OnValueChanged(GXDLMSViewArguments arg)
        {
            GXDLMSCharge target = (GXDLMSCharge)Target;

            if (arg.Index == 5)
            {
                ActiveCommodityScaleTb.Text = target.UnitChargeActive.ChargePerUnitScaling.CommodityScale.ToString();
                ActivePriceScaleTb.Text     = target.UnitChargeActive.ChargePerUnitScaling.PriceScale.ToString();

                ActiveTargetCb.Items.Clear();
                int selected = -1;
                foreach (GXDLMSObject it in Target.Parent.GetObjects(ObjectType.Credit))
                {
                    int pos = ActiveTargetCb.Items.Add(it);
                    if (it == target.UnitChargeActive.Commodity.Target)
                    {
                        selected = pos;
                    }
                }
                ActiveTargetCb.SelectedIndex = selected;
                ActiveIndexTB.Text           = target.UnitChargeActive.Commodity.Index.ToString();
                ActiveChargePerUnits.Items.Clear();
                if (target.UnitChargeActive.ChargeTables != null)
                {
                    foreach (GXChargeTable it in target.UnitChargeActive.ChargeTables)
                    {
                        ListViewItem li = new ListViewItem(it.Index.ToString());
                        li.SubItems.Add(it.ChargePerUnit.ToString());
                        li.Tag = it;
                        ActiveChargePerUnits.Items.Add(li);
                    }
                }
            }
            else if (arg.Index == 6)
            {
                PassiveCommodityScaleTb.Text = target.UnitChargePassive.ChargePerUnitScaling.CommodityScale.ToString();
                PassivePriceScaleTb.Text     = target.UnitChargePassive.ChargePerUnitScaling.PriceScale.ToString();

                PassiveTargetCb.Items.Clear();
                int selected = -1;
                foreach (GXDLMSObject it in Target.Parent.GetObjects(ObjectType.Credit))
                {
                    int pos = PassiveTargetCb.Items.Add(it);
                    if (it == target.UnitChargePassive.Commodity.Target)
                    {
                        selected = pos;
                    }
                }
                PassiveTargetCb.SelectedIndex = selected;
                PassiveIndexTB.Text           = target.UnitChargePassive.Commodity.Index.ToString();

                PassiveChargePerUnits.Items.Clear();
                if (target.UnitChargePassive.ChargeTables != null)
                {
                    foreach (GXChargeTable it in target.UnitChargePassive.ChargeTables)
                    {
                        ListViewItem li = new ListViewItem(it.Index.ToString());
                        li.SubItems.Add(it.ChargePerUnit.ToString());
                        li.Tag = it;
                        PassiveChargePerUnits.Items.Add(li);
                    }
                }
            }
            else
            {
                throw new IndexOutOfRangeException("index");
            }
        }