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 示します。 関連付けられたコントロール デザイナー クラスによって 3 つの DesignerActionMethodItem コマンドが作成され、それぞれがコントロールに 2 つのプロパティを設定します。 メソッドを InvokeTransactedChange 使用すると、Visual Studio 2005 などのデザイン ホストの元に戻す機能を使用して、完了した各トランザクションを 1 つの単位としてロールバックできます。
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
を呼び出し、変更が完了したことをデザイン ホストに通知します。
デザイン ホストまたは関連付けられているコントロールが例外の静的 Canceled
例外フィールドを CheckoutException スローした場合、トランザクションは を 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
(プロパティまたはメソッド) に変更が行われていることを通知し、デザイン ホストによって変更が取り消されない場合は、指定した を引数として使用して指定context
された callback
を呼び出し、変更が完了したことをデザイン ホストに通知します。
デザイン ホストまたは関連付けられたコントロールが例外の静的 Canceled
例外フィールドを CheckoutException スローした場合、トランザクションは を 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
を呼び出し、変更が完了したことをデザイン ホストに通知します。
デザイン ホストまたは関連付けられているコントロールが例外の静的 Canceled
例外フィールドを CheckoutException スローした場合、トランザクションは を callback
呼び出さずに取り消されます。
こちらもご覧ください
- IServiceProvider
- EventDescriptor
- PropertyDescriptor
- TransactedChangeCallback
- ASP.NET コントロール デザイナーの概要
適用対象
.NET