/// <summary> /// Handles the click event of the MonitoringMenu_RemoveItems_Click control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void MonitoringMenu_RemoveItems_Click(object sender, EventArgs e) { try { // check if operation is currently allowed. if (m_Subscription.Session == null || MonitoredItemsLV.SelectedItems.Count == 0) { return; } // Collect the items to delete. List <ListViewItem> itemsToDelete = new List <ListViewItem>(); for (int ii = 0; ii < MonitoredItemsLV.SelectedItems.Count; ii++) { MonitoredItem monitoredItem = MonitoredItemsLV.SelectedItems[ii].Tag as MonitoredItem; if (monitoredItem != null) { m_Server.RemoveMonitoredItem(m_Subscription, monitoredItem); itemsToDelete.Add(MonitoredItemsLV.SelectedItems[ii]); } } // Remove item(s). for (int ii = 0; ii < itemsToDelete.Count; ii++) { MonitoredItem monitoredItem = itemsToDelete[ii].Tag as MonitoredItem; // Check the status. if (ServiceResult.IsBad(monitoredItem.Status.Error)) { itemsToDelete[ii].SubItems[5].Text = monitoredItem.Status.Error.StatusCode.ToString(); continue; } itemsToDelete[ii].Remove(); } // Fit column width. // NodeId. MonitoredItemsLV.Columns[0].Width = -2; // Error. MonitoredItemsLV.Columns[5].Width = -2; // Update status label. OnUpdateStatusLabel("Removing monitored items succeeded.", true); } catch (Exception exception) { // Update status label. OnUpdateStatusLabel("An exception occured while removing monitored items: " + exception.Message, false); } }
/// <summary> // Handles the remove items procedure started from the menu bar. /// <summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void RemoveItems_Click(object sender, EventArgs e) { try { // Check if operation is currently allowed. if (monitoredItemsControl.Subscription.Session == null || monitoredItemsControl.MonitoredItemsList.SelectedItems.Count == 0) { return; } // Collect the items to delete. List <ListViewItem> itemsToDelete = new List <ListViewItem>(); for (int ii = 0; ii < monitoredItemsControl.MonitoredItemsList.SelectedItems.Count; ii++) { MonitoredItem monitoredItem = monitoredItemsControl.MonitoredItemsList.SelectedItems[ii].Tag as MonitoredItem; if (monitoredItem != null) { m_Server.RemoveMonitoredItem(monitoredItemsControl.Subscription, monitoredItem); itemsToDelete.Add(monitoredItemsControl.MonitoredItemsList.SelectedItems[ii]); } } // Check the status. for (int ii = 0; ii < itemsToDelete.Count; ii++) { MonitoredItem monitoredItem = itemsToDelete[ii].Tag as MonitoredItem; if (ServiceResult.IsBad(monitoredItem.Status.Error)) { // Fill error column. itemsToDelete[ii].SubItems[5].Text = monitoredItem.Status.Error.StatusCode.ToString(); continue; } // Remove the current item from the listview. itemsToDelete[ii].Remove(); } // Set the width of the NodeId and the Error column. monitoredItemsControl.MonitoredItemsList.Columns[0].Width = -2; monitoredItemsControl.MonitoredItemsList.Columns[5].Width = -2; // Update status label. toolStripStatusLabel.Text = "Removing monitored items succeeded."; } catch (Exception exception) { // Update status label. toolStripStatusLabel.Text = "An exception occured while removing monitored items: " + exception.Message; toolStripStatusLabel.Image = global::Siemens.OpcUA.Client.Properties.Resources.error; } }
/// <summary> /// 订阅内移除变量 /// </summary> /// <param name="tag">要移除的变量</param> /// <returns></returns> public bool RemoveSubscription(TagItem tag) { MonitoredItem monitoredItem = uAClient.RemoveMonitoredItem(_Subscription, _MonitorItem[tag.ServerId]); if (_MonitorItem[tag.ServerId].Created == false) { _SubscriptionTags.Remove(tag.ServerId); _MonitorItem.Remove(tag.ServerId); return(true); } else { return(false); } }