private void ActiveMasksCb_SelectedIndexChanged(object sender, EventArgs e) { try { GXDLMSRegisterActivation target = (GXDLMSRegisterActivation)Target; target.ActiveMask = target.MaskList[ActiveMasksCb.SelectedIndex].Key; errorProvider1.SetError(ActiveMasksCb, Properties.Resources.ValueChangedTxt); Target.UpdateDirty(4, target.ActiveMask); } catch (Exception ex) { MessageBox.Show(Parent, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void OnValueChanged(GXDLMSViewArguments arg) { GXDLMSRegisterActivation target = (GXDLMSRegisterActivation)Target; if (arg.Index == 2) { // register_assignment Assigments.Items.Clear(); if (target.RegisterAssignment != null) { foreach (GXDLMSObjectDefinition it in target.RegisterAssignment) { ListViewItem li = new ListViewItem(it.ObjectType.ToString()); li.SubItems.Add(it.LogicalName); Assigments.Items.Add(li); } } } else if (arg.Index == 3) { // mask_list Masks.Items.Clear(); ActiveMasksCb.Items.Clear(); StringBuilder sb = new StringBuilder(); string str; foreach (KeyValuePair<byte[], byte[]> it in target.MaskList) { if (IsAscii(it.Key)) { str = ASCIIEncoding.ASCII.GetString(it.Key); } else { str = GXDLMSTranslator.ToHex(it.Key); } ListViewItem li = new ListViewItem(str); sb.Length = 0; foreach (byte v in it.Value) { sb.Append(v); sb.Append(", "); } if (sb.Length != 0) { sb.Length -= 2; } li.SubItems.Add(sb.ToString()); li.Tag = it; Masks.Items.Add(li); ActiveMasksCb.Items.Add(str); } } else if (arg.Index == 4) { string str; if (target.ActiveMask != null && IsAscii(target.ActiveMask)) { str = ASCIIEncoding.ASCII.GetString(target.ActiveMask); } else { str = GXDLMSTranslator.ToHex(target.ActiveMask); } this.ActiveMasksCb.SelectedIndexChanged -= new System.EventHandler(this.ActiveMasksCb_SelectedIndexChanged); ActiveMasksCb.SelectedIndex = ActiveMasksCb.FindString(str); this.ActiveMasksCb.SelectedIndexChanged += new System.EventHandler(this.ActiveMasksCb_SelectedIndexChanged); } }
void OnShowDlg(GXActionArgs arg) { if (InvokeRequired) { BeginInvoke(new ShowDlgEventHandler(OnShowDlg), arg).AsyncWaitHandle.WaitOne(); } else { GXDLMSRegisterActivation target = (GXDLMSRegisterActivation)Target; ListViewItem li = null; if (arg.Index == 1) { GXDLMSObjectDefinition item = new GXDLMSObjectDefinition(); GXDLMSTargetObjectDlg dlg = new GXDLMSTargetObjectDlg("Add new register", null, Target.Parent.GetObjects(new ObjectType[] { ObjectType.Register, ObjectType.ExtendedRegister, ObjectType.DemandRegister })); if (dlg.ShowDialog(this) == DialogResult.OK) { item.ObjectType = dlg.Target.ObjectType; item.LogicalName = dlg.Target.LogicalName; li = Assigments.Items.Add(item.ObjectType.ToString()); li.SubItems.Add(item.LogicalName); li.Tag = item; arg.Value = target.AddRegister(arg.Client, ((GXDLMSTargetObjectDlg)dlg).Target); } else { arg.Handled = true; } } else if (arg.Index == 2) { GXDLMSObjectDefinition item = new GXDLMSObjectDefinition(); GXDLMSRegisterActivationDlg dlg = new GXDLMSRegisterActivationDlg("Add new mask", null, null); if (dlg.ShowDialog(this) == DialogResult.OK) { arg.Value = target.AddMask(arg.Client, dlg.MaskName, dlg.IndexArray); } else { arg.Handled = true; } } else if (arg.Index == 3) { if (Masks.SelectedItems.Count == 1) { GXDLMSObjectDefinition item = new GXDLMSObjectDefinition(); KeyValuePair<byte[], byte[]> it = (KeyValuePair<byte[], byte[]>)Masks.SelectedItems[0].Tag; GXDLMSRegisterActivationDlg dlg = new GXDLMSRegisterActivationDlg("Remove mask", it.Key, it.Value); if (dlg.ShowDialog(this) == DialogResult.OK) { arg.Value = target.RemoveMask(arg.Client, ((GXDLMSRegisterActivationDlg)dlg).MaskName); } else { arg.Handled = true; } } else { MessageBox.Show(Parent, "Select one item to remove", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { arg.Handled = true; } } }