Create a subscription

You create a subscription inside the Start() method.

Tip:
To insert a new method automatically:
  • In Visual Studio, place the caret after the += operator, and press TAB twice.
  • In Visual Studio Code, refer to the editor suggestions.

Example

In this example, the Session_UserChange method is subscribed to the user change event using the UserChange event handler and the += operator.
public override void Start()
{
    Session.UserChange += Session_UserChange;
}
Important: Always cancel the subscription in the Stop() method to avoid a memory leak. See Cancel a subscription.
The following example shows the Session_UserChange method.
private void Session_UserChange(object sender, UserChangeEventArgs e)
{
    Log.Info(e.newUser.BrowseName);
}
sender
The IUAObject object that corresponds to the node origin of the event.
e
The C# object that contains the event data based on the data type of the event handler (UserChangeEventArgs in the example).

Event handlers

Depending on the event type, create a subscription by using different event handlers.

Value change of a variable event

To subscribe a method to the value change of a variable, use the VariableChange event handler, supplied by the IUAVariable class. See IUAVariable.VariableChange.

All events generated by an object
To subscribe a method to all events generated by an object, use the UAEvent event handler, supplied by the IUAObject class. See IUAObject.UAEvent.
A specific event of an object

To subscribe a method to a specific event generated by an object, use the corresponding event handler supplied by the type.

In this example, the OnMouseClick event handler runs the Button2_OnMouseClick method each time Button2 is pressed. The OnMouseClick event handler is supplied by the Button class.
public override void Start()
{
    var button2 = Owner.Get<Button>("Button2");
    button2.OnMouseClick += Button2_OnMouseClick;
}

private void Button2_OnMouseClick(object sender, MouseClickEvent e)
{
    var label2 = Owner.Get<Label>("Label2");
    var button = (Button)sender;
    label2.Text = "Mouse click event on " + button.BrowseName;
}