void OnShowDlg(GXActionArgs arg, GXDLMSTargetObjectDlg dlg, GXDLMSTarget it) { if (InvokeRequired) { BeginInvoke(new ShowDlgEventHandler(OnShowDlg), arg, dlg, it).AsyncWaitHandle.WaitOne(); } else { bool remove = false; ListViewItem li = null; GXDLMSParameterMonitor target = Target as GXDLMSParameterMonitor; if (it == null) { remove = true; if (ParametersLV.SelectedItems.Count != 1) { arg.Handled = true; return; } else { li = ParametersLV.SelectedItems[0]; it = (GXDLMSTarget)li.Tag; dlg.Target = it.Target; dlg.Index = it.AttributeIndex; } } if (dlg.ShowDialog(this) == DialogResult.OK) { if (!remove) { it.Target = dlg.Target; it.AttributeIndex = dlg.Index; li = ParametersLV.Items.Add(it.Target.ToString()); li.SubItems.Add(it.AttributeIndex.ToString()); li.Tag = it; arg.Value = target.Insert(arg.Client, it); } else { arg.Value = target.Delete(arg.Client, it); li.Remove(); } } else { arg.Handled = true; } } }
public void PreAction(GXActionArgs arg) { if (arg.Action == ActionType.Action) { if (arg.Index == 1) { GXDLMSTarget item = new GXDLMSTarget(); GXDLMSTargetObjectDlg dlg = new GXDLMSTargetObjectDlg("Add new target", item.Target, item.AttributeIndex, Target.Parent); OnShowDlg(arg, dlg, item); } else if (arg.Index == 2) { GXDLMSTargetObjectDlg dlg = new GXDLMSTargetObjectDlg("Remove target", null, 0, null); OnShowDlg(arg, dlg, null); } } }