ControlDesigner.InvokeTransactedChange Método

Definición

Ajusta una serie de cambios en una transacción, utilizando los parámetros especificados que se pueden deshacer como una unidad con la funcionalidad de deshacer del host de diseño.

Sobrecargas

InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String)

Ajusta una serie de cambios en una transacción, utilizando los parámetros especificados que se pueden deshacer como una unidad con la funcionalidad de deshacer del host de diseño.

InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String, MemberDescriptor)

Ajusta una serie de cambios en una transacción, utilizando los parámetros especificados que se pueden deshacer como una unidad con la funcionalidad de deshacer del host de diseño.

InvokeTransactedChange(IServiceProvider, IComponent, TransactedChangeCallback, Object, String, MemberDescriptor)

Ajusta una serie de cambios en una transacción, utilizando los parámetros especificados que se pueden deshacer como una unidad con la funcionalidad de deshacer del host de diseño.

InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String)

Ajusta una serie de cambios en una transacción, utilizando los parámetros especificados que se pueden deshacer como una unidad con la funcionalidad de deshacer del host de diseño.

C#
public static void InvokeTransactedChange(System.ComponentModel.IComponent component, System.Web.UI.Design.TransactedChangeCallback callback, object context, string description);

Parámetros

component
IComponent

El control asociado al diseñador de controles.

callback
TransactedChangeCallback

Objeto TransactedChangeCallback que representa una función a la que se va a llamar en el diseñador de controles como parte de la transacción.

context
Object

Un objeto que contiene el argumento para la devolución de llamada.

description
String

Una descripción del efecto de permitir que se complete la transacción, que el host de diseño utiliza para ofrecer al usuario la posibilidad de cancelar la transacción.

Excepciones

component es null.

O bien

callback es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear un control compuesto simple con y Label un TextBox control , junto con propiedades para establecer el texto de la etiqueta, y también las Textpropiedades , Widthy BackColor del TextBox control . Una clase de diseñador de controles asociada crea tres DesignerActionMethodItem comandos, cada uno de los cuales establece dos propiedades en el control. Mediante el InvokeTransactedChange método , puede usar la funcionalidad de deshacer del host de diseño, como Visual Studio 2005, para revertir cada transacción completada como una unidad.

C#
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;
            }
        }
    }
}

Comentarios

La implementación del InvokeTransactedChange método notifica al host de diseño, determinado por la Site propiedad de component, que se está produciendo un cambio en el control asociado y, si el host de diseño no cancela el cambio, invoca el especificado callback mediante el especificado contexty, a continuación, notifica al host de diseño que el cambio ha completado.

Si el host de diseño o el control asociado inicia un campo de excepción estático Canceled de una CheckoutException excepción, la transacción se cancela sin invocar callback.

Consulte también

Se aplica a

.NET Framework 4.8.1 e outras versións
Produto Versións
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String, MemberDescriptor)

Ajusta una serie de cambios en una transacción, utilizando los parámetros especificados que se pueden deshacer como una unidad con la funcionalidad de deshacer del host de diseño.

C#
public static void InvokeTransactedChange(System.ComponentModel.IComponent component, System.Web.UI.Design.TransactedChangeCallback callback, object context, string description, System.ComponentModel.MemberDescriptor member);

Parámetros

component
IComponent

El control asociado al diseñador de controles.

callback
TransactedChangeCallback

Objeto TransactedChangeCallback que representa una función a la que se va a llamar en el diseñador de controles como parte de la transacción.

context
Object

Un objeto que contiene el argumento para la devolución de llamada.

description
String

Una descripción del efecto de permitir que se complete la transacción, que el host de diseño utiliza para ofrecer al usuario la posibilidad de cancelar la transacción.

member
MemberDescriptor

Objeto MemberDescriptor (normalmente un objeto EventDescriptor o PropertyDescriptor) que describe el miembro del control asociado que se invoca como parte de la transacción.

Excepciones

component es null.

O bien

callback es null.

Ejemplos

Para obtener un ejemplo de código, vea InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String).

Comentarios

La implementación del InvokeTransactedChange método notifica al host de diseño, que viene determinado por la Site propiedad de component, que se está produciendo un cambio en el especificado member (propiedad o método) del control asociado y, si el host de diseño no cancela el cambio, invoca el especificado callback utilizando el especificado context como argumento y, a continuación, notifica al host de diseño que el cambio ha completado.

Si el host de diseño o el control asociado inicia un campo de excepción estático Canceled de una CheckoutException excepción, la transacción se cancela sin invocar callback.

Consulte también

Se aplica a

.NET Framework 4.8.1 e outras versións
Produto Versións
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

InvokeTransactedChange(IServiceProvider, IComponent, TransactedChangeCallback, Object, String, MemberDescriptor)

Ajusta una serie de cambios en una transacción, utilizando los parámetros especificados que se pueden deshacer como una unidad con la funcionalidad de deshacer del host de diseño.

C#
public static void InvokeTransactedChange(IServiceProvider serviceProvider, System.ComponentModel.IComponent component, System.Web.UI.Design.TransactedChangeCallback callback, object context, string description, System.ComponentModel.MemberDescriptor member);

Parámetros

serviceProvider
IServiceProvider

Objeto IServiceProvider que representa el host de diseño que proporciona servicios del diseñador de controles para el control asociado.

component
IComponent

El control asociado al diseñador de controles.

callback
TransactedChangeCallback

Objeto TransactedChangeCallback que representa una función a la que se va a llamar en el diseñador de controles como parte de la transacción.

context
Object

Un objeto que contiene el argumento para la devolución de llamada.

description
String

Una descripción del efecto de permitir que se complete la transacción, que el host de diseño utiliza para ofrecer al usuario la posibilidad de cancelar la transacción.

member
MemberDescriptor

Objeto MemberDescriptor (normalmente un objeto EventDescriptor o PropertyDescriptor) que describe el miembro del control asociado que se invoca como parte de la transacción.

Excepciones

component es null.

O bien

callback es null.

O bien

serviceProvider es null.

Ejemplos

Para obtener un ejemplo de código, vea InvokeTransactedChange.

Comentarios

La implementación del InvokeTransactedChange método notifica al host de diseño, representado por serviceProvider, que se produce un cambio en el especificado member (propiedad o método) del control asociado y, si el host de diseño no cancela el cambio, invoca el especificado callback utilizando el especificado context como argumento y, a continuación, notifica al host de diseño que el cambio ha completado.

Si el host de diseño o el control asociado inicia un campo de excepción estático Canceled de una CheckoutException excepción, la transacción se cancela sin invocar callback.

Consulte también

Se aplica a

.NET Framework 4.8.1 e outras versións
Produto Versións
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1