ToolboxItemCreatorCallback デリゲート
アセンブリ: System.Drawing (system.drawing.dll 内)

Public Delegate Function ToolboxItemCreatorCallback ( _ serializedObject As Object, _ format As String _ ) As ToolboxItem
public delegate ToolboxItem^ ToolboxItemCreatorCallback ( Object^ serializedObject, String^ format )
/** @delegate */ public delegate ToolboxItem ToolboxItemCreatorCallback ( Object serializedObject, String format )
戻り値
serializedObject で指定された逆シリアル化 ToolboxItem オブジェクト。

このデリゲートのメソッド シグネチャと同じメソッド シグネチャを持つツールボックス アイテム クリエータ用メソッドを実装し、そのメソッドを用いて、ツールボックスに置かれた特定のクリップボード データ形式の任意のオブジェクトから、ツールボックス 項目を作成できます。たとえば、TextBox を作成するツールボックス アイテム クリエータをデザインして、クリップボードからツールボックスに貼り付けられたテキストを格納できます。IToolboxService の AddCreator メソッドを使用して、特定のデータ型に対する ToolboxItemCreatorCallback イベント ハンドラをツールボックスに追加できます。serializedObject パラメータは、データ オブジェクトを格納します。
ToolboxItemCreatorCallback デリゲートを作成する場合は、イベントを処理するメソッドを識別してください。イベントをイベント ハンドラに関連付けるには、デリゲートのインスタンスをイベントに追加します。デリゲートを削除しない限り、そのイベントが発生すると常にイベント ハンドラが呼び出されます。イベント ハンドラ デリゲートの詳細については、「イベントとデリゲート」を参照してください。

IToolboxService を使用して、ツールボックスに、"Text" データ形式のハンドラを追加したり、ToolboxItemCreatorCallback を実行したりするコンポーネントを提供する方法を次の例に示します。データ クリエータのコールバック デリゲートは、テキスト データを渡してツールボックスに貼り付け、テキストを格納する TextBox を作成するカスタム ToolboxItem のフォームにそのテキスト データをドラッグします。
Imports System Imports System.ComponentModel Imports System.ComponentModel.Design Imports System.Drawing Imports System.Drawing.Design Imports System.Windows.Forms ' Component that adds a "Text" data format ToolboxItemCreatorCallback ' to the Toolbox that creates a custom ToolboxItem that ' creates a TextBox containing the text data. <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _ Public Class TextDataTextBoxComponent Inherits System.ComponentModel.Component Private creatorAdded As Boolean = False Private ts As IToolboxService Public Sub New() End Sub ' ISite override to register TextBox creator Public Overrides Property Site() As System.ComponentModel.ISite Get Return MyBase.Site End Get Set(ByVal Value As System.ComponentModel.ISite) If Not (Value Is Nothing) Then MyBase.Site = Value If Not creatorAdded Then AddTextTextBoxCreator() End If Else If creatorAdded Then RemoveTextTextBoxCreator() End If MyBase.Site = Value End If End Set End Property ' Adds a "Text" data format creator to the toolbox that creates ' a textbox from a text fragment pasted to the toolbox. Private Sub AddTextTextBoxCreator() ts = CType(GetService(GetType(IToolboxService)), IToolboxService) If Not (ts Is Nothing) Then Dim textCreator As New ToolboxItemCreatorCallback(AddressOf Me.CreateTextBoxForText) Try ts.AddCreator(textCreator, "Text", CType(GetService(GetType(IDesignerHost)), IDesignerHost)) creatorAdded = True Catch ex As Exception MessageBox.Show(ex.ToString(), "Exception Information") End Try End If End Sub ' Removes any "Text" data format creator from the toolbox. Private Sub RemoveTextTextBoxCreator() If Not (ts Is Nothing) Then ts.RemoveCreator("Text", CType(GetService(GetType(IDesignerHost)), IDesignerHost)) creatorAdded = False End If End Sub ' ToolboxItemCreatorCallback delegate format method to create ' the toolbox item. Private Function CreateTextBoxForText(ByVal serializedObject As Object, ByVal format As String) As ToolboxItem Dim formats As String() = CType(serializedObject, System.Windows.Forms.DataObject).GetFormats() If CType(serializedObject, System.Windows.Forms.DataObject).GetDataPresent("System.String", True) Then Return New TextToolboxItem(CStr(CType(serializedObject, System.Windows.Forms.DataObject).GetData("System.String", True))) End If Return Nothing End Function Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If creatorAdded Then RemoveTextTextBoxCreator() End If End Sub End Class ' Custom toolbox item creates a TextBox and sets its Text property ' to the constructor-specified text. <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _ Public Class TextToolboxItem Inherits System.Drawing.Design.ToolboxItem Private [text] As String Delegate Sub SetTextMethodHandler(ByVal c As Control, ByVal [text] As String) Public Sub New(ByVal [text] As String) Me.text = [text] End Sub ' ToolboxItem.CreateComponentsCore override to create the TextBox ' and link a method to set its Text property. <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _ Protected Overrides Function CreateComponentsCore(ByVal host As System.ComponentModel.Design.IDesignerHost) As System.ComponentModel.IComponent() Dim textbox As System.Windows.Forms.TextBox = CType(host.CreateComponent(GetType(TextBox)), TextBox) ' Because the designer resets the text of the textbox, use ' a SetTextMethodHandler to set the text to the value of ' the text data. Dim c As Control = host.RootComponent c.BeginInvoke(New SetTextMethodHandler(AddressOf OnSetText), New Object() {textbox, [text]}) Return New System.ComponentModel.IComponent() {textbox} End Function ' Method to set the text property of a TextBox after it is initialized. Private Sub OnSetText(ByVal c As Control, ByVal [text] As String) c.Text = [text] End Sub End Class
using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing; using System.Drawing.Design; using System.Windows.Forms; namespace TextDataTextBoxComponent { // Component that adds a "Text" data format ToolboxItemCreatorCallback // to the Toolbox that creates a custom ToolboxItem that // creates a TextBox containing the text data. [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] public class TextDataTextBoxComponent : System.ComponentModel.Component { private bool creatorAdded = false; private IToolboxService ts; public TextDataTextBoxComponent() { } // ISite override to register TextBox creator public override System.ComponentModel.ISite Site { get { return base.Site; } set { if( value != null ) { base.Site = value; if( !creatorAdded ) AddTextTextBoxCreator(); } else { if( creatorAdded ) RemoveTextTextBoxCreator(); base.Site = value; } } } // Adds a "Text" data format creator to the toolbox that creates // a textbox from a text fragment pasted to the toolbox. private void AddTextTextBoxCreator() { ts = (IToolboxService)GetService(typeof(IToolboxService)); if (ts != null) { ToolboxItemCreatorCallback textCreator = new ToolboxItemCreatorCallback(this.CreateTextBoxForText); try { ts.AddCreator(textCreator, "Text", (IDesignerHost)GetService(typeof(IDesignerHost))); creatorAdded = true; } catch(Exception ex) { MessageBox.Show(ex.ToString(), "Exception Information"); } } } // Removes any "Text" data format creator from the toolbox. private void RemoveTextTextBoxCreator() { if (ts != null) { ts.RemoveCreator("Text", (IDesignerHost)GetService(typeof(IDesignerHost))); creatorAdded = false; } } // ToolboxItemCreatorCallback delegate format method to create // the toolbox item. private ToolboxItem CreateTextBoxForText(object serializedObject, string format) { string[] formats = ((System.Windows.Forms.DataObject)serializedObject).GetFormats(); if( ((System.Windows.Forms.DataObject)serializedObject).GetDataPresent("System.String", true) ) return new TextToolboxItem( (string)((System.Windows.Forms.DataObject)serializedObject).GetData("System.String", true) ); return null; } protected override void Dispose(bool disposing) { if( creatorAdded ) RemoveTextTextBoxCreator(); } } // Custom toolbox item creates a TextBox and sets its Text property // to the constructor-specified text. [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] public class TextToolboxItem : System.Drawing.Design.ToolboxItem { private string text; private delegate void SetTextMethodHandler(Control c, string text); public TextToolboxItem(string text) : base() { this.text = text; } // ToolboxItem.CreateComponentsCore override to create the TextBox // and link a method to set its Text property. [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")] protected override System.ComponentModel.IComponent[] CreateComponentsCore(System.ComponentModel.Design.IDesignerHost host) { System.Windows.Forms.TextBox textbox = (TextBox)host.CreateComponent(typeof(TextBox)); // Because the designer resets the text of the textbox, use // a SetTextMethodHandler to set the text to the value of // the text data. Control c = host.RootComponent as Control; c.BeginInvoke(new SetTextMethodHandler(OnSetText), new object[] {textbox, text}); return new System.ComponentModel.IComponent[] { textbox }; } // Method to set the text property of a TextBox after it is initialized. private void OnSetText(Control c, string text) { c.Text = text; } } }
#using <System.Windows.Forms.dll> #using <System.Drawing.dll> #using <System.dll> using namespace System; using namespace System::ComponentModel; using namespace System::ComponentModel::Design; using namespace System::Drawing; using namespace System::Drawing::Design; using namespace System::Windows::Forms; using namespace System::Security::Permissions; namespace TextDataTextBoxComponent { // Custom toolbox item creates a TextBox and sets its Text property // to the constructor-specified text. [PermissionSetAttribute(SecurityAction::Demand, Name="FullTrust")] public ref class TextToolboxItem: public System::Drawing::Design::ToolboxItem { private: String^ text; delegate void SetTextMethodHandler( Control^ c, String^ text ); public: TextToolboxItem( String^ text ) : ToolboxItem() { this->text = text; } protected: // ToolboxItem::CreateComponentsCore to create the TextBox // and link a method to set its Text property. virtual array<System::ComponentModel::IComponent^>^ CreateComponentsCore( System::ComponentModel::Design::IDesignerHost^ host ) override { System::Windows::Forms::TextBox^ textbox = dynamic_cast<TextBox^>(host->CreateComponent( TextBox::typeid )); // Because the designer resets the text of the textbox, use // a SetTextMethodHandler to set the text to the value of // the text data. Control^ c = dynamic_cast<Control^>(host->RootComponent); array<Object^>^temp0 = {textbox,text}; c->BeginInvoke( gcnew SetTextMethodHandler( this, &TextToolboxItem::OnSetText ), temp0 ); array<System::ComponentModel::IComponent^>^temp1 = {textbox}; return temp1; } private: // Method to set the text property of a TextBox after it is initialized. void OnSetText( Control^ c, String^ text ) { c->Text = text; } }; // Component that adds a "Text" data format ToolboxItemCreatorCallback // to the Toolbox that creates a custom ToolboxItem that // creates a TextBox containing the text data. public ref class TextDataTextBoxComponent: public System::ComponentModel::Component { private: bool creatorAdded; IToolboxService^ ts; public: TextDataTextBoxComponent() { creatorAdded = false; } property System::ComponentModel::ISite^ Site { // ISite to register TextBox creator virtual System::ComponentModel::ISite^ get() override { return __super::Site; } virtual void set( System::ComponentModel::ISite^ value ) override { if ( value != nullptr ) { __super::Site = value; if ( !creatorAdded ) AddTextTextBoxCreator(); } else { if ( creatorAdded ) RemoveTextTextBoxCreator(); __super::Site = value; } } } private: // Adds a "Text" data format creator to the toolbox that creates // a textbox from a text fragment pasted to the toolbox. void AddTextTextBoxCreator() { ts = dynamic_cast<IToolboxService^>(GetService( IToolboxService::typeid )); if ( ts != nullptr ) { ToolboxItemCreatorCallback^ textCreator = gcnew ToolboxItemCreatorCallback( this, &TextDataTextBoxComponent::CreateTextBoxForText ); try { ts->AddCreator( textCreator, "Text", dynamic_cast<IDesignerHost^>(GetService( IDesignerHost::typeid )) ); creatorAdded = true; } catch ( Exception^ ex ) { MessageBox::Show( ex->ToString(), "Exception Information" ); } } } // Removes any "Text" data format creator from the toolbox. void RemoveTextTextBoxCreator() { if ( ts != nullptr ) { ts->RemoveCreator( "Text", dynamic_cast<IDesignerHost^>(GetService( IDesignerHost::typeid )) ); creatorAdded = false; } } // ToolboxItemCreatorCallback delegate format method to create // the toolbox item. ToolboxItem^ CreateTextBoxForText( Object^ serializedObject, String^ format ) { array<String^>^formats = (dynamic_cast<System::Windows::Forms::DataObject^>(serializedObject))->GetFormats(); if ( (dynamic_cast<System::Windows::Forms::DataObject^>(serializedObject))->GetDataPresent( "System::String", true ) ) return gcnew TextToolboxItem( dynamic_cast<String^>((dynamic_cast<System::Windows::Forms::DataObject^>(serializedObject))->GetData( "System::String", true )) ); return nullptr; } public: ~TextDataTextBoxComponent() { if ( creatorAdded ) RemoveTextTextBoxCreator(); } }; }
package TextDataTextBoxComponent; import System.*; import System.ComponentModel.*; import System.ComponentModel.Design.*; import System.Drawing.*; import System.Drawing.Design.*; import System.Windows.Forms.*; // Component that adds a "Text" data format ToolboxItemCreatorCallback // to the Toolbox that creates a custom ToolboxItem that // creates a TextBox containing the text data. public class TextDataTextBoxComponent extends System.ComponentModel.Component { private boolean creatorAdded = false; private IToolboxService ts; public TextDataTextBoxComponent() { } //TextDataTextBoxComponent // ISite override to register TextBox creator /** @property */ public System.ComponentModel.ISite get_Site() { return super.get_Site(); } //get_Site /** @property */ public void set_Site(System.ComponentModel.ISite value) { if (value != null) { super.set_Site(value); if (!(creatorAdded)) { AddTextTextBoxCreator(); } } else { if (creatorAdded) { RemoveTextTextBoxCreator(); } super.set_Site(value); } } //set_Site // Adds a "Text" data format creator to the toolbox that creates // a textbox from a text fragment pasted to the toolbox. private void AddTextTextBoxCreator() { ts = (IToolboxService)GetService(IToolboxService.class.ToType()); if (ts != null) { ToolboxItemCreatorCallback textCreator = new ToolboxItemCreatorCallback(this.CreateTextBoxForText); try { ts.AddCreator(textCreator, "Text", (IDesignerHost)GetService(IDesignerHost.class.ToType())); creatorAdded = true; } catch (System.Exception ex) { MessageBox.Show(ex.ToString(), "Exception Information"); } } } //AddTextTextBoxCreator // Removes any "Text" data format creator from the toolbox. private void RemoveTextTextBoxCreator() { if (ts != null) { ts.RemoveCreator("Text", (IDesignerHost)GetService(IDesignerHost.class.ToType())); creatorAdded = false; } } //RemoveTextTextBoxCreator // ToolboxItemCreatorCallback delegate format method to create // the toolbox item. private ToolboxItem CreateTextBoxForText(Object serializedObject , String format) { String formats[] = ((System.Windows.Forms.DataObject)serializedObject).GetFormats(); if (((System.Windows.Forms.DataObject)serializedObject). GetDataPresent("System.String", true)) { return new TextToolboxItem((String) (((System.Windows.Forms.DataObject)serializedObject). GetData("System.String", true))); } return null; } //CreateTextBoxForText protected void Dispose(boolean disposing) { if (creatorAdded) { RemoveTextTextBoxCreator(); } } //Dispose } //TextDataTextBoxComponent // Custom toolbox item creates a TextBox and sets its Text property // to the constructor-specified text. public class TextToolboxItem extends System.Drawing.Design.ToolboxItem { private String text; /** @delegate */ private delegate void SetTextMethodHandler(Control c, String text); /** @attribute System.Security.Permissions.PermissionSet( System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust") */ public TextToolboxItem(String text) { this.text = text; } //TextToolboxItem // ToolboxItem.CreateComponentsCore override to create the TextBox // and link a method to set its Text property. /** @attribute System.Security.Permissions.PermissionSet( System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust") */ protected System.ComponentModel.IComponent[] CreateComponentsCore( System.ComponentModel.Design.IDesignerHost host) { System.Windows.Forms.TextBox textbox = (TextBox)host.CreateComponent(TextBox.class.ToType()); // Because the designer resets the text of the textbox, use // a SetTextMethodHandler to set the text to the value of // the text data. Control c = (Control)host.get_RootComponent(); c.BeginInvoke(new SetTextMethodHandler(OnSetText), new Object[] { textbox, text }); return new System.ComponentModel.IComponent[] { textbox }; } //CreateComponentsCore // Method to set the text property of a TextBox after it is initialized. private void OnSetText(Control c, String text) { c.set_Text(text); } //OnSetText } //TextToolboxItem

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- ToolboxItemCreatorCallback デリゲートのページへのリンク