void OnShowDialog(GXActionArgs arg)
 {
     if (InvokeRequired)
     {
         BeginInvoke(new ShowDialogEventHandler(OnShowDialog), arg).AsyncWaitHandle.WaitOne();
     }
     else
     {
         GXDLMSNtpSetup target = (GXDLMSNtpSetup)Target;
         //If user is adding a new item.
         if (arg.Index == 2)
         {
             GXDLMSNtpDlg dlg = new GXDLMSNtpDlg(0, null, false);
             if (dlg.ShowDialog(Parent) == DialogResult.OK)
             {
                 arg.Value = target.AddAuthenticationKey(arg.Client, dlg.Id, dlg.Key);
             }
             else
             {
                 arg.Handled = true;
             }
         }
         else
         {
             //User is removing the item.
             if (KeysView.SelectedItems.Count == 1)
             {
                 KeyValuePair <UInt32, byte[]> item = (KeyValuePair <UInt32, byte[]>)KeysView.SelectedItems[0].Tag;
                 GXDLMSNtpDlg dlg = new GXDLMSNtpDlg(item.Key, item.Value, true);
                 if (dlg.ShowDialog(Parent) == DialogResult.OK)
                 {
                     arg.Value = target.DeleteAuthenticationKey(arg.Client, item.Key);
                     KeysView.Items.Remove(KeysView.SelectedItems[0]);
                 }
                 else
                 {
                     arg.Handled = true;
                 }
             }
             else
             {
                 arg.Handled = true;
             }
         }
     }
 }
        public void OnValueChanged(GXDLMSViewArguments arg)
        {
            GXDLMSNtpSetup target = (GXDLMSNtpSetup)Target;

            if (arg.Index == 2)
            {
                ActivatedCb.Checked = target.Activated;
            }
            else if (arg.Index == 6)
            {
                KeysView.Items.Clear();
                foreach (KeyValuePair <UInt32, byte[]> it in target.Keys)
                {
                    ListViewItem li = new ListViewItem(new string[] { it.Key.ToString(), GXDLMSTranslator.ToHex(it.Value) });
                    KeysView.Items.Add(li).Tag = it;
                }
                ActivatedCb.Checked = target.Activated;
            }
            else
            {
                throw new IndexOutOfRangeException("index");
            }
        }