Exposing Methods and Properties in a Windows Client Control Add-in

Control add-ins let you add custom user interface (UI) controls to pages in the Microsoft Dynamics NAV Windows client. By using the basic control add-in definition interfaces, a control add-in is bound to a page only through the field that is applied with the control add-in. It is also bound to the page through the SourceExpr Property, the OnControlAddin Trigger, and other triggers for exposed events. To extend UI controls on a page, you can expose methods and properties in a control add-in assembly so that they can be called by C/AL code on most page triggers.

Exposing Methods and Properties

To expose a public method or property in a control add-in, you add the method or property to the control add-in class and mark it by using the managed attribute Microsoft.Dynamics.Framework.UI.Extensibility.ApplicationVisibleAttribute in control add-in class.

The following code example is from a control add-in class that exposes a simple method and property.

[ControlAddInExport("MyControlAddIn")]
public class MyControlAddIn : WinFormsControlAddInBase, ...
{
    ...
    
    //Exposes a method
    [ApplicationVisible]
    public string Add(int param1, int param2)
    {
        return FormatNumber(param1 + param2, this.Notation);
    }
    
    //Exposes a property
    [ApplicationVisible]
    public Notation Notation
    {
        get { return this.notation; }
        set { this.notation = value; }
    }

Calling Methods and Properties in the Control Add-in From C/AL Triggers

Exposed methods and properties in a control add-in can be invoked from C/AL code on page triggers. The invoking mechanism resembles other .NET Framework types with the .NET Framework interoperability except that you can call the control add-in methods and properties using C/AL without defining a variable.

To call a method in C/AL code on a page trigger, use the following code.

CurrPage.ControlName.MyMethod(parameter)

To call a property in C/AL code, use the following code.

CurrPage.ControlName.MyProperty

ControlName is the name of the field control that is applied with the control add-in. The name is specified by the Name Property. MyMethod and MyProperty are the names of method and property of the control add-in to be invoked.

Triggers That Are Not Supported

You cannot invoke control add-in methods and properties from the following triggers because the triggers are invoked before the page is instantiated:

See Also

Tasks

How to: Create a Windows Client Control Add-in

Concepts

Extending the Windows Client Using Control Add-ins
Extending Microsoft Dynamics NAV Using Microsoft .NET Framework Interoperability