ControlDesigner.InvokeTransactedChange Metod

Definition

Omsluter en serie ändringar i en transaktion med de angivna parametrarna som kan återställas som en enhet med designvärdens ångra-funktioner.

Överlagringar

Name Description
InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String)

Omsluter en serie ändringar i en transaktion med de angivna parametrarna som kan återställas som en enhet med designvärdens ångra-funktioner.

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

Omsluter en serie ändringar i en transaktion med de angivna parametrarna som kan återställas som en enhet med designvärdens ångra-funktioner.

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

Omsluter en serie ändringar i en transaktion med de angivna parametrarna som kan återställas som en enhet med designvärdens ångra-funktioner.

InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String)

Omsluter en serie ändringar i en transaktion med de angivna parametrarna som kan återställas som en enhet med designvärdens ångra-funktioner.

public:
 static void InvokeTransactedChange(System::ComponentModel::IComponent ^ component, System::Web::UI::Design::TransactedChangeCallback ^ callback, System::Object ^ context, System::String ^ description);
public static void InvokeTransactedChange(System.ComponentModel.IComponent component, System.Web.UI.Design.TransactedChangeCallback callback, object context, string description);
static member InvokeTransactedChange : System.ComponentModel.IComponent * System.Web.UI.Design.TransactedChangeCallback * obj * string -> unit
Public Shared Sub InvokeTransactedChange (component As IComponent, callback As TransactedChangeCallback, context As Object, description As String)

Parametrar

component
IComponent

Kontrollen som är associerad med kontrolldesignern.

callback
TransactedChangeCallback

Ett TransactedChangeCallback objekt som representerar en funktion som ska anropas i kontrolldesignern som en del av transaktionen.

context
Object

Ett objekt som innehåller argumentet för återanrop.

description
String

En beskrivning av effekten av att låta transaktionen slutföras, som används av designvärden för att ge användaren möjlighet att avbryta transaktionen.

Undantag

component är null.

-eller-

callback är null.

Exempel

I följande kodexempel visas hur du skapar en enkel sammansatt kontroll med en Label och en TextBox kontroll, tillsammans med egenskaper för att ange etiketttexten Text, samt egenskaperna , Widthoch BackColor för TextBox kontrollen. En associerad kontrolldesignerklass skapar tre DesignerActionMethodItem kommandon som var och en anger två egenskaper för kontrollen. Genom att använda metoden InvokeTransactedChange kan du använda funktionen ångra för designvärden, till exempel Visual Studio 2005, för att återställa varje slutförd transaktion som en enhet.

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

Kommentarer

Implementeringen av InvokeTransactedChange metoden meddelar designvärden, som bestäms av Sitecomponentegenskapen , att en ändring sker i den associerade kontrollen och, om ändringen inte avbryts av designvärden, anropar den angivna callback med den angivna contextoch meddelar sedan designvärden att ändringen har slutförts.

Om designvärden eller den associerade kontrollen genererar ett statiskt Canceled undantagsfält i ett CheckoutException undantag avbryts transaktionen utan att callbackanropa .

Se även

Gäller för

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

Omsluter en serie ändringar i en transaktion med de angivna parametrarna som kan återställas som en enhet med designvärdens ångra-funktioner.

public:
 static void InvokeTransactedChange(System::ComponentModel::IComponent ^ component, System::Web::UI::Design::TransactedChangeCallback ^ callback, System::Object ^ context, System::String ^ description, System::ComponentModel::MemberDescriptor ^ member);
public static void InvokeTransactedChange(System.ComponentModel.IComponent component, System.Web.UI.Design.TransactedChangeCallback callback, object context, string description, System.ComponentModel.MemberDescriptor member);
static member InvokeTransactedChange : System.ComponentModel.IComponent * System.Web.UI.Design.TransactedChangeCallback * obj * string * System.ComponentModel.MemberDescriptor -> unit
Public Shared Sub InvokeTransactedChange (component As IComponent, callback As TransactedChangeCallback, context As Object, description As String, member As MemberDescriptor)

Parametrar

component
IComponent

Kontrollen som är associerad med kontrolldesignern.

callback
TransactedChangeCallback

Ett TransactedChangeCallback objekt som representerar en funktion som ska anropas i kontrolldesignern som en del av transaktionen.

context
Object

Ett objekt som innehåller argumentet för återanrop.

description
String

En beskrivning av effekten av att låta transaktionen slutföras, som används av designvärden för att ge användaren möjlighet att avbryta transaktionen.

member
MemberDescriptor

Ett MemberDescriptor objekt (vanligtvis antingen ett EventDescriptor eller ett PropertyDescriptor objekt) som beskriver medlemmen i den associerade kontroll som anropas som en del av transaktionen.

Undantag

component är null.

-eller-

callback är null.

Exempel

Ett kodexempel finns i InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String).

Kommentarer

Implementeringen av InvokeTransactedChange metoden meddelar designvärden, som bestäms av Sitecomponentegenskapen , att en ändring sker på den angivna member (egenskapen eller metoden) för den associerade kontrollen och, om ändringen inte avbryts av designvärden, anropar den angivna callback med det angivna context som argument och meddelar sedan designvärden att ändringen har slutförts.

Om designvärden eller den associerade kontrollen genererar ett statiskt Canceled undantagsfält i ett CheckoutException undantag avbryts transaktionen utan att callbackanropa .

Se även

Gäller för

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

Omsluter en serie ändringar i en transaktion med de angivna parametrarna som kan återställas som en enhet med designvärdens ångra-funktioner.

public:
 static void InvokeTransactedChange(IServiceProvider ^ serviceProvider, System::ComponentModel::IComponent ^ component, System::Web::UI::Design::TransactedChangeCallback ^ callback, System::Object ^ context, System::String ^ description, System::ComponentModel::MemberDescriptor ^ member);
public static void InvokeTransactedChange(IServiceProvider serviceProvider, System.ComponentModel.IComponent component, System.Web.UI.Design.TransactedChangeCallback callback, object context, string description, System.ComponentModel.MemberDescriptor member);
static member InvokeTransactedChange : IServiceProvider * System.ComponentModel.IComponent * System.Web.UI.Design.TransactedChangeCallback * obj * string * System.ComponentModel.MemberDescriptor -> unit
Public Shared Sub InvokeTransactedChange (serviceProvider As IServiceProvider, component As IComponent, callback As TransactedChangeCallback, context As Object, description As String, member As MemberDescriptor)

Parametrar

serviceProvider
IServiceProvider

Ett IServiceProvider objekt som representerar designvärden som tillhandahåller kontrolldesignertjänster för den associerade kontrollen.

component
IComponent

Kontrollen som är associerad med kontrolldesignern.

callback
TransactedChangeCallback

Ett TransactedChangeCallback objekt som representerar en funktion som ska anropas i kontrolldesignern som en del av transaktionen.

context
Object

Ett objekt som innehåller argumentet för återanrop.

description
String

En beskrivning av effekten av att låta transaktionen slutföras, som används av designvärden för att ge användaren möjlighet att avbryta transaktionen.

member
MemberDescriptor

Ett MemberDescriptor objekt (vanligtvis antingen ett EventDescriptor eller ett PropertyDescriptor objekt) som beskriver medlemmen i den associerade kontroll som anropas som en del av transaktionen.

Undantag

component är null.

-eller-

callback är null.

-eller-

serviceProvider är null.

Exempel

Ett kodexempel finns i InvokeTransactedChange.

Kommentarer

Implementeringen av InvokeTransactedChange metoden meddelar designvärden, som representeras av serviceProvider, att en ändring sker på den angivna member (egenskapen eller metoden) för den associerade kontrollen och, om ändringen inte avbryts av designvärden, anropar den angivna callback med det angivna context som argument och meddelar sedan designvärden att ändringen har slutförts.

Om designvärden eller den associerade kontrollen genererar ett statiskt Canceled undantagsfält i ett CheckoutException undantag avbryts transaktionen utan att callbackanropa .

Se även

Gäller för