.NET Framework Class Library
ControlDesignerActionLists Property

Gets the action list collection for the control designer.

Namespace:   System.Web.UI.Design
Assembly:  System.Design (in System.Design.dll)
Syntax
Public Overrides ReadOnly Property ActionLists As [%$TOPIC/68wxa8w3_en-us_VS_110_1_0_0_0_0%]
public override [%$TOPIC/68wxa8w3_en-us_VS_110_1_0_1_0_0%] ActionLists { get; }
public:
virtual property [%$TOPIC/68wxa8w3_en-us_VS_110_1_0_2_0_0%]^ ActionLists {
	[%$TOPIC/68wxa8w3_en-us_VS_110_1_0_2_0_1%]^ get () override;
}
abstract ActionLists : [%$TOPIC/68wxa8w3_en-us_VS_110_1_0_3_0_0%] with get 
override ActionLists : [%$TOPIC/68wxa8w3_en-us_VS_110_1_0_3_0_1%] with get

Property Value

Type: System.ComponentModel.DesignDesignerActionListCollection
A DesignerActionListCollection object that contains the DesignerActionList items for the control designer.
Remarks

Notes to Inheritors

To add an action list menu to a custom control in design view, your custom control designer must override the ActionLists property to return a custom control class that is derived from the DesignerActionList class.

Examples

The following code example demonstrates how to create a simple composite control with a Label and a TextBox control, together with properties to set the Text properties on both internal controls, and also the Width and BackColor properties of the TextBox control. An associated control designer class creates three DesignerActionMethodItem commands, each of which sets two properties on the control, and can be rolled back with the undo functionality of the design host.

Imports Microsoft.VisualBasic
Imports System.Web
Imports System.Web.UI
Imports System.Drawing
Imports System.Collections
Imports System.Web.UI.WebControls
Imports System.Web.UI.Design
Imports System.ComponentModel
Imports System.ComponentModel.Design

Namespace ASPNet.Samples

    ' Create a custom control class with a Label and TextBox
    <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.InheritanceDemand, Name:="FullTrust")> _
    <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
    <Designer("ASPNet.Samples.SampleControlDesigner")> _
    Public Class SampleControl
        Inherits CompositeControl

        Dim defaultWidth As Integer = 150

        Public Sub New()

        End Sub 

        ' Create a set of Public properties
        <Bindable(True), DefaultValue(""), _
            PersistenceMode(PersistenceMode.Attribute)> _
        Public Property LabelText() As String 
            Get
                EnsureChildControls()
                Return MyLabel.Text
            End Get 
            Set(ByVal value As String)
                EnsureChildControls()
                MyLabel.Text = value
            End Set 
        End Property

        <Bindable(True), DefaultValue(""), _
            PersistenceMode(PersistenceMode.Attribute)> _
        Public Property BoxText() As String 
            Get
                EnsureChildControls()
                Return MyTextBox.Text
            End Get 
            Set(ByVal value As String)
                EnsureChildControls()
                MyTextBox.Text = value
            End Set 
        End Property

        <Bindable(True), Category("Appearance"), _
            PersistenceMode(PersistenceMode.Attribute)> _
        Public Property BoxWidth() As Unit
            Get
                EnsureChildControls()
                Return MyTextBox.Width
            End Get 
            Set(ByVal value As Unit)
                EnsureChildControls()
                MyTextBox.Width = value
            End Set 
        End Property

        <Bindable(True), Category("Appearance"), _
            PersistenceMode(PersistenceMode.Attribute)> _
        Public Overrides Property BackColor() As Color
            Get
                EnsureChildControls()
                Return MyTextBox.BackColor()
            End Get 
            Set(ByVal value As Color)
                EnsureChildControls()
                MyTextBox.BackColor = value
            End Set 
        End Property 

        ' Create private properties 
        Private ReadOnly Property MyTextBox() As TextBox
            Get
                EnsureChildControls()
                Return CType(FindControl("MyTextBox"), TextBox)
            End Get 
        End Property 
        Private ReadOnly Property MyLabel() As Label
            Get
                EnsureChildControls()
                Return CType(FindControl("MyLabel"), Label)
            End Get 
        End Property 

        ' Create a Label and a TextBox 
        Protected Overrides Sub CreateChildControls()
            Controls.Clear()
            MyBase.CreateChildControls()

            ' Create a Label control 
            Dim localLabel As New Label()
            localLabel.ID = "MyLabel"
            localLabel.Text = localLabel.ID + ": "
            localLabel.EnableViewState = False
            Controls.Add(localLabel)

            ' Create a TextBox control 
            Dim localTextBox As New TextBox()
            localTextBox.ID = "MyTextBox"
            localTextBox.Width = defaultWidth
            localTextBox.EnableViewState = False
            Controls.Add(localTextBox)
        End Sub 
    End Class 

    '----------------------------------------------- 
    ' Create a designer class for the SampleControl
    <System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags:=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> _
    Public Class SampleControlDesigner
        Inherits ControlDesigner

        Private sampControl As SampleControl

        ' Constructor 
        Public Sub New()
            MyBase.New()
        End Sub 

        ' Do not allow resizing; force use of properties to set width 
        Public Overrides ReadOnly Property AllowResize() As Boolean 
            Get 
                Return False 
            End Get 
        End Property 

        ' Create a custom ActionLists collection 
        Public Overrides ReadOnly Property ActionLists() As DesignerActionListCollection
            Get 
                ' Create the collection 
                Dim lists As New DesignerActionListCollection()

                ' Get the base items, if any
                lists.AddRange(MyBase.ActionLists)

                ' Add my own list of actions
                lists.Add(New CustomControlActionList(Me))

                Return lists
            End Get 
        End Property 

        ' Create an embedded DesignerActionList class 
        Private Class CustomControlActionList
            Inherits DesignerActionList

            ' Create private fields 
            Private _parent As SampleControlDesigner
            Private _items As DesignerActionItemCollection

            ' Constructor 
            Public Sub New(ByVal parent As SampleControlDesigner)
                MyBase.New(parent.Component)
                _parent = parent
            End Sub 

            ' Create a set of transacted callback methods 
            ' Callback for a wide format 
            Public Sub FormatWide()
                Dim ctrl As SampleControl = CType(_parent.Component, SampleControl)

                ' Create the callback 
                Dim toCall As New TransactedChangeCallback(AddressOf DoFormat)
                ' Create the transacted change in the control
                ControlDesigner.InvokeTransactedChange(ctrl, toCall, "FormatWide", "Use a wide format")
            End Sub 

            ' Callback for the medium format 
            Public Sub FormatMedium()
                Dim ctrl As SampleControl = CType(_parent.Component, SampleControl)

                ' Create the callback 
                Dim toCall As New TransactedChangeCallback(AddressOf DoFormat)
                ' Create the transacted change in the control
                ControlDesigner.InvokeTransactedChange(ctrl, toCall, "FormatMedium", "Use a medium format")
            End Sub 

            ' Callback for the narrow format 
            Public Sub FormatNarrow()
                Dim ctrl As SampleControl = CType(_parent.Component, SampleControl)

                ' Create the callback 
                Dim toCall As New TransactedChangeCallback(AddressOf DoFormat)
                ' Create the transacted change in the control
                ControlDesigner.InvokeTransactedChange(ctrl, toCall, "FormatNarrow", "Use a narrow format")
            End Sub 

            ' Get the sorted list of Action items 
            Public Overrides Function GetSortedActionItems() As DesignerActionItemCollection
                If IsNothing(_items) Then 
                    ' Create the collection
                    _items = New DesignerActionItemCollection()

                    ' Add a header to the list
                    _items.Add(New DesignerActionHeaderItem("Select a Style:"))

                    ' Add three commands
                    _items.Add(New DesignerActionMethodItem(Me, "FormatWide", "Format Wide", True))
                    _items.Add(New DesignerActionMethodItem(Me, "FormatMedium", "Format Medium", True))
                    _items.Add(New DesignerActionMethodItem(Me, "FormatNarrow", "Format Narrow", True))
                End If 

                Return _items
            End Function 

            ' Function for the callback to call 
            Public Function DoFormat(ByVal arg As Object) As Boolean 
                ' Get a reference to the designer's associated component 
                Dim ctl As SampleControl = CType(_parent.ViewControl(), SampleControl)

                ' Get the format name from the arg 
                Dim fmt As String = CType(arg, String)

                ' Create property descriptors 
                Dim widthProp As PropertyDescriptor = TypeDescriptor.GetProperties(ctl)("BoxWidth")
                Dim backColorProp As PropertyDescriptor = TypeDescriptor.GetProperties(ctl)("BackColor")

                ' For the selected format, set two properties 
                Select Case fmt
                    Case "FormatWide"
                        widthProp.SetValue(ctl, Unit.Pixel(250))
                        backColorProp.SetValue(ctl, Color.LightBlue)
                    Case "FormatNarrow"
                        widthProp.SetValue(ctl, Unit.Pixel(100))
                        backColorProp.SetValue(ctl, Color.LightCoral)
                    Case "FormatMedium"
                        widthProp.SetValue(ctl, Unit.Pixel(150))
                        backColorProp.SetValue(ctl, Color.White)
                End Select 

                ' Return an indication of success 
                Return True 

            End Function 
        End Class 
    End Class 

End Namespace
using System;
using System.Web;
using System.Web.UI;
using System.Drawing;
using System.Collections;
using System.Web.UI.WebControls;
using System.Web.UI.Design;
using System.ComponentModel;
using System.ComponentModel.Design;

namespace ASPNet.Samples
{
    // Create a custom control class with a Label and TextBox
    [System.Security.Permissions.PermissionSetAttribute(
        System.Security.Permissions.SecurityAction.InheritanceDemand,
        Name = "FullTrust")]
    [System.Security.Permissions.PermissionSetAttribute(
        System.Security.Permissions.SecurityAction.Demand,
        Name = "FullTrust")]
    [DesignerAttribute(typeof(SampleControlDesigner))]
    public class SampleControl : CompositeControl
    {
        int defaultWidth = 150;

        public SampleControl()
        {
        }

        // Create a set of public properties
        [Browsable(true), Bindable(true), DefaultValue(""),
            PersistenceMode(PersistenceMode.Attribute)]
        public string LabelText
        {
            get
            {
                EnsureChildControls();
                return MyLabel.Text;
            }
            set
            {
                EnsureChildControls();
                MyLabel.Text = value;
            }
        }

        [Browsable(true), Bindable(true), DefaultValue(""),
            PersistenceMode(PersistenceMode.Attribute)]
        public string BoxText
        {
            get
            { 
                EnsureChildControls();
                return MyTextBox.Text;
            }
            set
            {
                EnsureChildControls();
                MyTextBox.Text = value;
            }
        }

        [Browsable(true), Bindable(true), Category("Appearance"),
            PersistenceMode(PersistenceMode.Attribute)]
        public Unit BoxWidth
        {
            get
            {
                EnsureChildControls();
                return MyTextBox.Width;
            }
            set
            {
                EnsureChildControls();
                MyTextBox.Width = value;
            }
        }

        [Browsable(true), Bindable(true), Category("Appearance"),
            PersistenceMode(PersistenceMode.Attribute)]
        public override Color BackColor
        {
            get
            {
                EnsureChildControls();
                return MyTextBox.BackColor;
           }
            set
            {
                EnsureChildControls();
                MyTextBox.BackColor = value;
            }
        }

        // Create private properties 
        private TextBox MyTextBox
        {
            get
            {
                EnsureChildControls();
                return (TextBox)FindControl("MyTextBox");
            }
        }
        private Label MyLabel
        {
            get
            {
                EnsureChildControls();
                return (Label)FindControl("MyLabel");
            }
        }

        // Create a label and a text box. 
        protected override void CreateChildControls()
        {
            // Clear the controls
            Controls.Clear();

            // Create a Label control
            Label localLabel = new Label();
            localLabel.EnableViewState = false;
            localLabel.ID = "MyLabel";
            localLabel.Text = localLabel.ID + ": ";
            Controls.Add(localLabel);

            // Create a TextBox control
            TextBox localTextBox = new TextBox();
            localTextBox.ID = "MyTextBox";
            localTextBox.Width = defaultWidth;
            Controls.Add(localTextBox);
        }
    }


    // Create a designer class for the SampleControl
    [System.Security.Permissions.SecurityPermission(
        System.Security.Permissions.SecurityAction.Demand, 
        Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
    public class SampleControlDesigner : ControlDesigner
    {
        // Constructor 
        public SampleControlDesigner() : base()
        {
        }

        // Do not allow resizing; force use of properties to set width 
        public override bool AllowResize
        {
            get { return false; }
        }

        // Create a custom ActionLists collection 
        public override DesignerActionListCollection ActionLists
        {
            get
            {
                // Create the collection
                DesignerActionListCollection actionLists = new DesignerActionListCollection();

                // Get the base items, if any
                actionLists.AddRange(base.ActionLists);

                // Add a custom list of actions
                actionLists.Add(new CustomControlActionList(this));

                return actionLists;
            }
        }

        // Create an embedded DesignerActionList class 
        private class CustomControlActionList : DesignerActionList
        {
            // Create private fields 
            private SampleControlDesigner _parent;
            private DesignerActionItemCollection items;

            // Constructor 
            public CustomControlActionList(SampleControlDesigner parent)
                : base(parent.Component)
            {
                _parent = parent;
            }

            // Create a set of transacted callback methods 
            // Callback for the wide format 
            public void FormatWide()
            {
                SampleControl ctrl = (SampleControl)_parent.Component;

                // Create the callback
                TransactedChangeCallback toCall = new TransactedChangeCallback(DoFormat);
                // Create the transacted change in the control
                ControlDesigner.InvokeTransactedChange(ctrl, toCall, "FormatWide", "Use a wide format");
            }

            // Callback for the medium format 
            public void FormatMedium()
            {
                SampleControl ctrl = (SampleControl)_parent.Component;

                // Create the callback
                TransactedChangeCallback toCall = new TransactedChangeCallback(DoFormat);
                // Create the transacted change in the control
                ControlDesigner.InvokeTransactedChange(ctrl, toCall, "FormatMedium", "Use a medium format");
            }

            // Callback for the narrow format 
            public void FormatNarrow()
            {
                SampleControl ctrl = (SampleControl)_parent.Component;

                // Create the callback
                TransactedChangeCallback toCall = new TransactedChangeCallback(DoFormat);
                // Create the transacted change in the control
                ControlDesigner.InvokeTransactedChange(ctrl, toCall, "FormatNarrow", "Use a narrow format");
            }

            // Get the sorted list of Action items 
            public override DesignerActionItemCollection GetSortedActionItems()
            {
                if (items == null)
                {
                    // Create the collection
                    items = new DesignerActionItemCollection();

                    // Add a header to the list
                    items.Add(new DesignerActionHeaderItem("Select a Style:"));

                    // Add three commands
                    items.Add(new DesignerActionMethodItem(this, "FormatWide", "Format Wide", true));
                    items.Add(new DesignerActionMethodItem(this, "FormatMedium", "Format Medium", true));
                    items.Add(new DesignerActionMethodItem(this, "FormatNarrow", "Format Narrow", true));
                }
                return items;
            }

            // Function for the callbacks to call 
            public bool DoFormat(object arg)
            {
                // Get a reference to the designer's associated component
                SampleControl ctl = (SampleControl)_parent.Component;

                // Get the format name from the arg 
                string fmt = (string)arg;

                // Create property descriptors
                PropertyDescriptor widthProp = TypeDescriptor.GetProperties(ctl)["BoxWidth"];
                PropertyDescriptor backColorProp = TypeDescriptor.GetProperties(ctl)["BackColor"];

                // For the selected format, set two properties 
                switch (fmt)
                {
                    case "FormatWide":
                        widthProp.SetValue(ctl, Unit.Pixel(250));
                        backColorProp.SetValue(ctl, Color.LightBlue);
                        break;
                    case "FormatNarrow":
                        widthProp.SetValue(ctl, Unit.Pixel(100));
                        backColorProp.SetValue(ctl, Color.LightCoral);
                        break;
                    case "FormatMedium":
                        widthProp.SetValue(ctl, Unit.Pixel(150));
                        backColorProp.SetValue(ctl, Color.White);
                        break;
                }
                _parent.UpdateDesignTimeHtml();

                // Return an indication of success 
                return true;
            }
        }
    }
}
Version Information

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0
.NET Framework Security
Platforms

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.