ControlDesigner.InvokeTransactedChange 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 매개 변수를 사용하여, 디자인 호스트의 실행 취소 기능을 통해 한 단위로 롤백될 수 있는 트랜잭션에 일련의 변경 사항을 래핑합니다.
오버로드
InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String) |
지정된 매개 변수를 사용하여, 디자인 호스트의 실행 취소 기능을 통해 한 단위로 롤백될 수 있는 트랜잭션에 일련의 변경 사항을 래핑합니다. |
InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String, MemberDescriptor) |
지정된 매개 변수를 사용하여, 디자인 호스트의 실행 취소 기능을 통해 한 단위로 롤백될 수 있는 트랜잭션에 일련의 변경 사항을 래핑합니다. |
InvokeTransactedChange(IServiceProvider, IComponent, TransactedChangeCallback, Object, String, MemberDescriptor) |
지정된 매개 변수를 사용하여, 디자인 호스트의 실행 취소 기능을 통해 한 단위로 롤백될 수 있는 트랜잭션에 일련의 변경 사항을 래핑합니다. |
InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String)
지정된 매개 변수를 사용하여, 디자인 호스트의 실행 취소 기능을 통해 한 단위로 롤백될 수 있는 트랜잭션에 일련의 변경 사항을 래핑합니다.
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)
매개 변수
- component
- IComponent
컨트롤 디자이너와 연결된 컨트롤입니다.
- callback
- TransactedChangeCallback
트랜잭션의 일부로 컨트롤 디자이너에서 호출할 함수를 나타내는 TransactedChangeCallback 개체입니다.
- context
- Object
콜백에 대한 인수를 포함하는 개체입니다.
- description
- String
트랜잭션을 완료하도록 허용하는 데 따른 효과에 대한 설명으로, 사용자에게 트랜잭션을 취소할 수 있는 기회를 주기 위해 디자인 호스트에서 사용됩니다.
예외
예제
다음 코드 예제를 만드는 방법을 보여 줍니다.는 간단한 복합 컨트롤을 Label 만드는 방법에 설명 합니다 및 TextBox 컨트롤과 함께 레이블 텍스트를 설정 하는 속성 및 Text, Width, 및 BackColor 컨트롤의 TextBox 속성입니다. 연결된 컨트롤 디자이너 클래스는 각각 컨트롤에 두 개의 속성을 설정하는 세 DesignerActionMethodItem 개의 명령을 만듭니다. 메서드를 InvokeTransactedChange 사용하면 Visual Studio 2005와 같은 디자인 호스트의 실행 취소 기능을 사용하여 완료된 각 트랜잭션을 단위로 롤백할 수 있습니다.
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
설명
메서드의 InvokeTransactedChange 구현은 의 속성component
에 의해 Site 결정되는 디자인 호스트에 연결된 컨트롤에서 변경이 발생하고 디자인 호스트에서 변경이 취소되지 않은 경우 지정된 context
를 사용하여 지정된 callback
을 호출한 다음, 변경이 완료되었음을 디자인 호스트에 알합니다.
디자인 호스트 또는 연결된 컨트롤이 예외의 CheckoutException 정적 Canceled
예외 필드를 throw하는 경우 를 호출callback
하지 않고 트랜잭션이 취소됩니다.
추가 정보
적용 대상
InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String, MemberDescriptor)
지정된 매개 변수를 사용하여, 디자인 호스트의 실행 취소 기능을 통해 한 단위로 롤백될 수 있는 트랜잭션에 일련의 변경 사항을 래핑합니다.
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)
매개 변수
- component
- IComponent
컨트롤 디자이너와 연결된 컨트롤입니다.
- callback
- TransactedChangeCallback
트랜잭션의 일부로 컨트롤 디자이너에서 호출할 함수를 나타내는 TransactedChangeCallback 개체입니다.
- context
- Object
콜백에 대한 인수를 포함하는 개체입니다.
- description
- String
트랜잭션을 완료하도록 허용하는 데 따른 효과에 대한 설명으로, 사용자에게 트랜잭션을 취소할 수 있는 기회를 주기 위해 디자인 호스트에서 사용됩니다.
- member
- MemberDescriptor
MemberDescriptor 개체로, 대개 트랜잭션의 일부로 호출되는 연결된 컨트롤의 멤버를 설명하는 EventDescriptor 또는 PropertyDescriptor 개체입니다.
예외
예제
코드 예제를 보려면 InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String)를 참조하십시오.
설명
메서드의 InvokeTransactedChange 구현은 의 속성에 의해 Site 결정되는 디자인 호스트에 연결된 컨트롤의 component
지정된 member
(속성 또는 메서드)에 대한 변경이 발생한다는 것을 알리고, 디자인 호스트에서 변경 내용이 취소되지 않으면 지정된 를 인수로 사용하여 지정된 callback
context
을 호출한 다음, 변경이 완료되었음을 디자인 호스트에 알 수 있습니다.
디자인 호스트 또는 연결된 컨트롤이 예외의 CheckoutException 정적 Canceled
예외 필드를 throw하는 경우 를 호출callback
하지 않고 트랜잭션이 취소됩니다.
추가 정보
적용 대상
InvokeTransactedChange(IServiceProvider, IComponent, TransactedChangeCallback, Object, String, MemberDescriptor)
지정된 매개 변수를 사용하여, 디자인 호스트의 실행 취소 기능을 통해 한 단위로 롤백될 수 있는 트랜잭션에 일련의 변경 사항을 래핑합니다.
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)
매개 변수
- serviceProvider
- IServiceProvider
연결된 컨트롤에 컨트롤 디자이너 서비스를 제공하는 디자인 호스트를 나타내는 IServiceProvider 개체입니다.
- component
- IComponent
컨트롤 디자이너와 연결된 컨트롤입니다.
- callback
- TransactedChangeCallback
트랜잭션의 일부로 컨트롤 디자이너에서 호출할 함수를 나타내는 TransactedChangeCallback 개체입니다.
- context
- Object
콜백에 대한 인수를 포함하는 개체입니다.
- description
- String
트랜잭션을 완료하도록 허용하는 데 따른 효과에 대한 설명으로, 사용자에게 트랜잭션을 취소할 수 있는 기회를 주기 위해 디자인 호스트에서 사용됩니다.
- member
- MemberDescriptor
MemberDescriptor 개체로, 대개 트랜잭션의 일부로 호출되는 연결된 컨트롤의 멤버를 설명하는 EventDescriptor 또는 PropertyDescriptor 개체입니다.
예외
예제
코드 예제를 보려면 InvokeTransactedChange를 참조하십시오.
설명
메서드의 InvokeTransactedChange 구현은 로 표시되는 serviceProvider
디자인 호스트에 연결된 컨트롤의 지정된 member
(속성 또는 메서드)에 대한 변경이 발생한다는 것을 알리고, 디자인 호스트에서 변경 내용이 취소되지 않은 경우 지정된 를 인수로 사용하여 지정된 context
를 호출 callback
한 다음, 변경이 완료되었음을 디자인 호스트에 알 수 있습니다.
디자인 호스트 또는 연결된 컨트롤이 예외의 CheckoutException 정적 Canceled
예외 필드를 throw하는 경우 를 호출callback
하지 않고 트랜잭션이 취소됩니다.
추가 정보
적용 대상
.NET