OPC Studio User's Guide and Reference
OpcBrowseNodeElement Class
Members  Example 



OpcLabs.EasyOpcForms Assembly > OpcLabs.EasyOpc.Forms.Browsing Namespace : OpcBrowseNodeElement Class
Contains an OPC "Classic" user browse element, i.a. all available information obtained about a node.
Object Model
OpcBrowseNodeElement ClassAEAttributeElement ClassAECategoryElement ClassAEConditionElement ClassAENodeElement ClassAESubconditionElement ClassComputerElement ClassDANodeElement ClassDAPropertyElement ClassOpcBrowseNodeElement ClassServerElement Class
Syntax
'Declaration
 
<CLSCompliantAttribute(True)>
<ComDefaultInterfaceAttribute(OpcLabs.EasyOpc.Forms.Browsing.ComTypes._OpcBrowseNodeElement)>
<ComVisibleAttribute(True)>
<GuidAttribute("5C0D47E7-60F9-4E2B-8714-9D1BC9E656D8")>
<TypeConverterAttribute(System.ComponentModel.ExpandableObjectConverter)>
<ValueControlAttribute("OpcLabs.BaseLib.Forms.Common.ObjectSerializationControl, OpcLabs.BaseLibForms, Version=5.81.455.1, Culture=neutral, PublicKeyToken=6faddca41dacb409", 
   DefaultReadWrite=False, 
   Export=True, 
   PageId=10001)>
<SerializableAttribute()>
Public NotInheritable Class OpcBrowseNodeElement 
   Inherits OpcLabs.BaseLib.Info
   Implements LINQPad.ICustomMemberProvider, OpcLabs.BaseLib.ComTypes._Info, OpcLabs.BaseLib.ComTypes._Object2, OpcLabs.EasyOpc.Forms.Browsing.ComTypes._OpcBrowseNodeElement, System.ICloneable, System.Runtime.Serialization.ISerializable, System.Xml.Serialization.IXmlSerializable 
'Usage
 
Dim instance As OpcBrowseNodeElement
[CLSCompliant(true)]
[ComDefaultInterface(OpcLabs.EasyOpc.Forms.Browsing.ComTypes._OpcBrowseNodeElement)]
[ComVisible(true)]
[Guid("5C0D47E7-60F9-4E2B-8714-9D1BC9E656D8")]
[TypeConverter(System.ComponentModel.ExpandableObjectConverter)]
[ValueControl("OpcLabs.BaseLib.Forms.Common.ObjectSerializationControl, OpcLabs.BaseLibForms, Version=5.81.455.1, Culture=neutral, PublicKeyToken=6faddca41dacb409", 
   DefaultReadWrite=false, 
   Export=true, 
   PageId=10001)]
[Serializable()]
public sealed class OpcBrowseNodeElement : OpcLabs.BaseLib.Info, LINQPad.ICustomMemberProvider, OpcLabs.BaseLib.ComTypes._Info, OpcLabs.BaseLib.ComTypes._Object2, OpcLabs.EasyOpc.Forms.Browsing.ComTypes._OpcBrowseNodeElement, System.ICloneable, System.Runtime.Serialization.ISerializable, System.Xml.Serialization.IXmlSerializable  
[CLSCompliant(true)]
[ComDefaultInterface(OpcLabs.EasyOpc.Forms.Browsing.ComTypes._OpcBrowseNodeElement)]
[ComVisible(true)]
[Guid("5C0D47E7-60F9-4E2B-8714-9D1BC9E656D8")]
[TypeConverter(System.ComponentModel.ExpandableObjectConverter)]
[ValueControl("OpcLabs.BaseLib.Forms.Common.ObjectSerializationControl, OpcLabs.BaseLibForms, Version=5.81.455.1, Culture=neutral, PublicKeyToken=6faddca41dacb409", 
   DefaultReadWrite=false, 
   Export=true, 
   PageId=10001)]
[Serializable()]
public ref class OpcBrowseNodeElement sealed : public OpcLabs.BaseLib.Info, LINQPad.ICustomMemberProvider, OpcLabs.BaseLib.ComTypes._Info, OpcLabs.BaseLib.ComTypes._Object2, OpcLabs.EasyOpc.Forms.Browsing.ComTypes._OpcBrowseNodeElement, System.ICloneable, System.Runtime.Serialization.ISerializable, System.Xml.Serialization.IXmlSerializable  
Example
// This example shows how to allow browsing for an OPC Data Access node by placing a browsing control on the form.
//
// Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
// OPC client and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-CSharp .
// Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
// a commercial license in order to use Online Forums, and we reply to every post.

using OpcLabs.EasyOpc.Forms.Browsing;
using System;
using System.Windows.Forms;
using OpcLabs.BaseLib;

namespace FormsDocExamples._OpcBrowseControl
{
    public partial class UsageForm : Form
    {
        public UsageForm()
        {
            InitializeComponent();
        }

        private void getOutputsButton_Click(object sender, EventArgs e)
        {
            // Obtain the current node element.
            OpcBrowseNodeElement currentNodeElement = opcBrowseControl1.Outputs.CurrentNodeElement;

            // Display the present parts of the current node element in the outputs text text box.
            outputsTextBox.Text = "";
            if (!(currentNodeElement.ComputerElement is null))
                outputsTextBox.Text += $"{nameof(OpcBrowseNodeElement.ComputerElement)}: {currentNodeElement.ComputerElement}\r\n";
            if (!(currentNodeElement.ServerElement is null))
                outputsTextBox.Text += $"{nameof(OpcBrowseNodeElement.ServerElement)}: {currentNodeElement.ServerElement}\r\n";
            if (!(currentNodeElement.DANodeElement is null))
                outputsTextBox.Text += $"{nameof(OpcBrowseNodeElement.DANodeElement)}: {currentNodeElement.DANodeElement}\r\n";
        }

        private void opcBrowseControl1_BrowseFailure(object sender, FailureEventArgs e)
        {
            // Append the event name and its arguments to the browsing events text box.
            browsingEventsTextBox.Text += $"{nameof(OpcBrowseControl.BrowseFailure)}: {e}\r\n";
        }

        private void opcBrowseControl1_CurrentNodeChanged(object sender, EventArgs e)
        {
            // Append the event name and the current node element to the browsing events text box.
            browsingEventsTextBox.Text += $"{nameof(OpcBrowseControl.CurrentNodeChanged)}; {opcBrowseControl1.Outputs.CurrentNodeElement}\r\n";
        }

        private void opcBrowseControl1_NodeDoubleClick(object sender, EventArgs e)
        {
            // Append the event name to the browsing events text box.
            browsingEventsTextBox.Text += $"{nameof(OpcBrowseControl.NodeDoubleClick)}\r\n";
        }

        private void opcBrowseControl1_SelectionChanged(object sender, EventArgs e)
        {
            // Append the event name to the browsing events text box.
            browsingEventsTextBox.Text += $"{nameof(OpcBrowseControl.SelectionChanged)}\r\n";
        }

        private void setInputsButton_Click(object sender, EventArgs e)
        {
            // Set the current node to a pre-defined OPC DA item on our server.
            opcBrowseControl1.InputsOutputs.CurrentNodeDescriptor.ServerDescriptor = "OPCLabs.KitServer.2";
            opcBrowseControl1.InputsOutputs.CurrentNodeDescriptor.DANodeDescriptor = "Demo.Ramp";
        }
    }
}
' This example shows how to allow browsing for an OPC Data Access node by placing a browsing control on the form.
'
' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
' OPC client and subscriber examples in VB.NET on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBNET .
' Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
' a commercial license in order to use Online Forums, and we reply to every post.

Imports OpcLabs.EasyOpc.Forms.Browsing
Imports OpcLabs.BaseLib

Namespace FormsDocExamples._OpcBrowseControl
    Public Class UsageForm
        Private Sub getOutputsButton_Click(sender As Object, e As EventArgs) Handles getOutputsButton.Click
            ' Obtain the current node element.
            Dim currentNodeElement As OpcBrowseNodeElement = opcBrowseControl1.Outputs.CurrentNodeElement

            ' Display the present parts of the current node element in the outputs text text box.
            outputsTextBox.Text = ""
            If currentNodeElement.ComputerElement IsNot Nothing Then
                outputsTextBox.Text += $"{NameOf(OpcBrowseNodeElement.ComputerElement)}: {currentNodeElement.ComputerElement}" + Environment.NewLine
            End If
            If currentNodeElement.ServerElement IsNot Nothing Then
                outputsTextBox.Text += $"{NameOf(OpcBrowseNodeElement.ServerElement)}: {currentNodeElement.ServerElement}" + Environment.NewLine
            End If
            If currentNodeElement.DANodeElement IsNot Nothing Then
                outputsTextBox.Text += $"{NameOf(OpcBrowseNodeElement.DANodeElement)}: {currentNodeElement.DANodeElement}" + Environment.NewLine
            End If
        End Sub

        Private Sub opcBrowseControl1_BrowseFailure(sender As Object, e As FailureEventArgs) Handles opcBrowseControl1.BrowseFailure
            ' Append the event name and its arguments to the browsing events text box.
            browsingEventsTextBox.Text += $"{NameOf(OpcBrowseControl.BrowseFailure)}: {e}" + Environment.NewLine
        End Sub

        Private Sub opcBrowseControl1_CurrentNodeChanged(sender As Object, e As EventArgs) Handles opcBrowseControl1.CurrentNodeChanged
            ' Append the event name and the current node element to the browsing events text box.
            browsingEventsTextBox.Text += $"{NameOf(OpcBrowseControl.CurrentNodeChanged)}; {opcBrowseControl1.Outputs.CurrentNodeElement}" + Environment.NewLine
        End Sub

        Private Sub opcBrowseControl1_NodeDoubleClick(sender As Object, e As EventArgs) Handles opcBrowseControl1.NodeDoubleClick
            ' Append the event name to the browsing events text box.
            browsingEventsTextBox.Text += $"{NameOf(OpcBrowseControl.NodeDoubleClick)}" + Environment.NewLine
        End Sub

        Private Sub opcBrowseControl1_SelectionChanged(sender As Object, e As EventArgs) Handles opcBrowseControl1.SelectionChanged
            ' Append the event name to the browsing events text box.
            browsingEventsTextBox.Text += $"{NameOf(OpcBrowseControl.SelectionChanged)}" + Environment.NewLine
        End Sub

        Private Sub setInputsButton_Click(sender As Object, e As EventArgs) Handles setInputsButton.Click
            ' Set the current node to a pre-defined OPC DA item on our server.
            opcBrowseControl1.InputsOutputs.CurrentNodeDescriptor.ServerDescriptor = "OPCLabs.KitServer.2"
            opcBrowseControl1.InputsOutputs.CurrentNodeDescriptor.DANodeDescriptor = "Demo.Ramp"
        End Sub
    End Class
End Namespace
namespace FormsDocExamples._OpcBrowseControl
{
    partial class UsageForm
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.opcBrowseControl1 = new OpcLabs.EasyOpc.Forms.Browsing.OpcBrowseControl();
            this.setInputsButton = new System.Windows.Forms.Button();
            this.getOutputsButton = new System.Windows.Forms.Button();
            this.label1 = new System.Windows.Forms.Label();
            this.browsingEventsTextBox = new System.Windows.Forms.TextBox();
            this.outputsTextBox = new System.Windows.Forms.TextBox();
            ((System.ComponentModel.ISupportInitialize)(this.opcBrowseControl1)).BeginInit();
            this.SuspendLayout();
            // 
            // opcBrowseControl1
            // 
            this.opcBrowseControl1.Location = new System.Drawing.Point(13, 42);
            this.opcBrowseControl1.MinimumSize = new System.Drawing.Size(135, 150);
            this.opcBrowseControl1.Name = "opcBrowseControl1";
            this.opcBrowseControl1.Size = new System.Drawing.Size(450, 300);
            this.opcBrowseControl1.TabIndex = 0;
            this.opcBrowseControl1.BrowseFailure += new OpcLabs.BaseLib.FailureEventHandler(this.opcBrowseControl1_BrowseFailure);
            this.opcBrowseControl1.CurrentNodeChanged += new System.EventHandler(this.opcBrowseControl1_CurrentNodeChanged);
            this.opcBrowseControl1.NodeDoubleClick += new System.EventHandler(this.opcBrowseControl1_NodeDoubleClick);
            this.opcBrowseControl1.SelectionChanged += new System.EventHandler(this.opcBrowseControl1_SelectionChanged);
            // 
            // setInputsButton
            // 
            this.setInputsButton.Location = new System.Drawing.Point(13, 13);
            this.setInputsButton.Name = "setInputsButton";
            this.setInputsButton.Size = new System.Drawing.Size(75, 23);
            this.setInputsButton.TabIndex = 1;
            this.setInputsButton.Text = "&Set inputs";
            this.setInputsButton.UseVisualStyleBackColor = true;
            this.setInputsButton.Click += new System.EventHandler(this.setInputsButton_Click);
            // 
            // getOutputsButton
            // 
            this.getOutputsButton.Location = new System.Drawing.Point(13, 349);
            this.getOutputsButton.Name = "getOutputsButton";
            this.getOutputsButton.Size = new System.Drawing.Size(75, 23);
            this.getOutputsButton.TabIndex = 2;
            this.getOutputsButton.Text = "&Get outputs";
            this.getOutputsButton.UseVisualStyleBackColor = true;
            this.getOutputsButton.Click += new System.EventHandler(this.getOutputsButton_Click);
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(479, 42);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(88, 13);
            this.label1.TabIndex = 3;
            this.label1.Text = "Browsing &events:";
            // 
            // browsingEventsTextBox
            // 
            this.browsingEventsTextBox.Location = new System.Drawing.Point(482, 59);
            this.browsingEventsTextBox.Multiline = true;
            this.browsingEventsTextBox.Name = "browsingEventsTextBox";
            this.browsingEventsTextBox.ReadOnly = true;
            this.browsingEventsTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
            this.browsingEventsTextBox.Size = new System.Drawing.Size(482, 283);
            this.browsingEventsTextBox.TabIndex = 4;
            // 
            // outputsTextBox
            // 
            this.outputsTextBox.Location = new System.Drawing.Point(13, 379);
            this.outputsTextBox.Multiline = true;
            this.outputsTextBox.Name = "outputsTextBox";
            this.outputsTextBox.ReadOnly = true;
            this.outputsTextBox.Size = new System.Drawing.Size(951, 68);
            this.outputsTextBox.TabIndex = 5;
            // 
            // UsageForm
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(976, 450);
            this.Controls.Add(this.outputsTextBox);
            this.Controls.Add(this.browsingEventsTextBox);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.getOutputsButton);
            this.Controls.Add(this.setInputsButton);
            this.Controls.Add(this.opcBrowseControl1);
            this.Name = "UsageForm";
            this.Text = "Usage";
            ((System.ComponentModel.ISupportInitialize)(this.opcBrowseControl1)).EndInit();
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private OpcLabs.EasyOpc.Forms.Browsing.OpcBrowseControl opcBrowseControl1;
        private System.Windows.Forms.Button setInputsButton;
        private System.Windows.Forms.Button getOutputsButton;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.TextBox browsingEventsTextBox;
        private System.Windows.Forms.TextBox outputsTextBox;
    }
}
Namespace FormsDocExamples._OpcBrowseControl
    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
    Partial Class UsageForm
        Inherits System.Windows.Forms.Form

        'Form overrides dispose to clean up the component list.
        <System.Diagnostics.DebuggerNonUserCode()>
        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
            Try
                If disposing AndAlso components IsNot Nothing Then
                    components.Dispose()
                End If
            Finally
                MyBase.Dispose(disposing)
            End Try
        End Sub

        'Required by the Windows Form Designer
        Private components As System.ComponentModel.IContainer

        'NOTE: The following procedure is required by the Windows Form Designer
        'It can be modified using the Windows Form Designer.  
        'Do not modify it using the code editor.
        <System.Diagnostics.DebuggerStepThrough()>
        Private Sub InitializeComponent()
            Me.opcBrowseControl1 = New OpcLabs.EasyOpc.Forms.Browsing.OpcBrowseControl()
            Me.setInputsButton = New System.Windows.Forms.Button()
            Me.getOutputsButton = New System.Windows.Forms.Button()
            Me.label1 = New System.Windows.Forms.Label()
            Me.browsingEventsTextBox = New System.Windows.Forms.TextBox()
            Me.outputsTextBox = New System.Windows.Forms.TextBox()
            Me.opcBrowseControl1.BeginInit()
            Me.SuspendLayout()
            '
            'opcBrowseControl1
            '
            Me.opcBrowseControl1.Location = New System.Drawing.Point(13, 42)
            Me.opcBrowseControl1.MinimumSize = New System.Drawing.Size(135, 150)
            Me.opcBrowseControl1.Name = "opcBrowseControl1"
            Me.opcBrowseControl1.Size = New System.Drawing.Size(450, 300)
            Me.opcBrowseControl1.TabIndex = 0
            '
            'setInputsButton
            '
            Me.setInputsButton.Location = New System.Drawing.Point(13, 13)
            Me.setInputsButton.Name = "setInputsButton"
            Me.setInputsButton.Size = New System.Drawing.Size(75, 23)
            Me.setInputsButton.TabIndex = 1
            Me.setInputsButton.Text = "&Set inputs"
            Me.setInputsButton.UseVisualStyleBackColor = True
            '
            'getOutputsButton
            '
            Me.getOutputsButton.Location = New System.Drawing.Point(13, 349)
            Me.getOutputsButton.Name = "getOutputsButton"
            Me.getOutputsButton.Size = New System.Drawing.Size(75, 23)
            Me.getOutputsButton.TabIndex = 2
            Me.getOutputsButton.Text = "&Get outputs"
            Me.getOutputsButton.UseVisualStyleBackColor = True
            '
            'label1
            '
            Me.label1.AutoSize = True
            Me.label1.Location = New System.Drawing.Point(479, 42)
            Me.label1.Name = "label1"
            Me.label1.Size = New System.Drawing.Size(88, 13)
            Me.label1.TabIndex = 3
            Me.label1.Text = "Browsing &events:"
            '
            'browsingEventsTextBox
            '
            Me.browsingEventsTextBox.Location = New System.Drawing.Point(482, 59)
            Me.browsingEventsTextBox.Multiline = True
            Me.browsingEventsTextBox.Name = "browsingEventsTextBox"
            Me.browsingEventsTextBox.ReadOnly = True
            Me.browsingEventsTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
            Me.browsingEventsTextBox.Size = New System.Drawing.Size(482, 283)
            Me.browsingEventsTextBox.TabIndex = 4
            '
            'outputsTextBox
            '
            Me.outputsTextBox.Location = New System.Drawing.Point(13, 379)
            Me.outputsTextBox.Multiline = True
            Me.outputsTextBox.Name = "outputsTextBox"
            Me.outputsTextBox.ReadOnly = True
            Me.outputsTextBox.Size = New System.Drawing.Size(951, 68)
            Me.outputsTextBox.TabIndex = 5
            '
            'UsageForm
            '
            Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            Me.ClientSize = New System.Drawing.Size(976, 450)
            Me.Controls.Add(Me.outputsTextBox)
            Me.Controls.Add(Me.browsingEventsTextBox)
            Me.Controls.Add(Me.label1)
            Me.Controls.Add(Me.getOutputsButton)
            Me.Controls.Add(Me.setInputsButton)
            Me.Controls.Add(Me.opcBrowseControl1)
            Me.Name = "UsageForm"
            Me.Text = "Usage"
            Me.opcBrowseControl1.EndInit()
            Me.ResumeLayout(False)
            Me.PerformLayout()

        End Sub

        Friend WithEvents opcBrowseControl1 As OpcLabs.EasyOpc.Forms.Browsing.OpcBrowseControl
        Friend WithEvents setInputsButton As Button
        Friend WithEvents getOutputsButton As Button
        Friend WithEvents label1 As Label
        Friend WithEvents browsingEventsTextBox As TextBox
        Friend WithEvents outputsTextBox As TextBox
    End Class
End Namespace
Inheritance Hierarchy

System.Object
   OpcLabs.BaseLib.Object2
      OpcLabs.BaseLib.Info
         OpcLabs.EasyOpc.Forms.Browsing.OpcBrowseNodeElement

Requirements

Target Platforms: .NET Framework: Windows 10 (selected versions), Windows 11 (selected versions), Windows Server 2016, Windows Server 2022; .NET: Linux, macOS, Microsoft Windows

See Also