ToolboxItemCreatorCallback 대리자
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
를 만들 수 있는 콜백 메커니즘을 ToolboxItem제공합니다.
public delegate System::Drawing::Design::ToolboxItem ^ ToolboxItemCreatorCallback(System::Object ^ serializedObject, System::String ^ format);
public delegate System.Drawing.Design.ToolboxItem ToolboxItemCreatorCallback(object serializedObject, string format);
type ToolboxItemCreatorCallback = delegate of obj * string -> ToolboxItem
Public Delegate Function ToolboxItemCreatorCallback(serializedObject As Object, format As String) As ToolboxItem
매개 변수
- serializedObject
- Object
for를 만들 데이터가 들어 있는 개체입니다 ToolboxItem .
- format
- String
만들 클립보드 데이터 형식의 이름입니다 ToolboxItem .
반환 값
로 지정된 ToolboxItem역직렬화된 serializedObject 개체입니다.
예제
다음 예제에서는 "Text" 데이터 형식 처리기를 추가하거나 IToolboxService도구 상자에 추가하는 데 사용하는 ToolboxItemCreatorCallback 구성 요소를 제공합니다. 데이터 작성자 콜백 대리자는 도구 상자에 붙여넣고 폼으로 끌어온 텍스트 데이터를 텍스트가 ToolboxItem 포함된 사용자 지정 TextBox 으로 전달합니다.
#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 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<IComponent^>^ CreateComponentsCore( IDesignerHost^ host ) override
{
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<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. This component uses a custom ToolboxItem that
// creates a TextBox containing the text data.
public ref class TextDataTextBoxComponent: public 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 )
{
IDataObject^ o = gcnew DataObject(dynamic_cast<IDataObject^>(serializedObject));
if( o->GetDataPresent("System::String", true) )
{
String^ toolboxText = dynamic_cast<String^>(o->GetData( "System::String", true ));
return( gcnew TextToolboxItem( toolboxText ));
}
return nullptr;
}
public:
~TextDataTextBoxComponent()
{
if ( creatorAdded )
RemoveTextTextBoxCreator();
}
};
}
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Drawing.Design;
using System.Security.Permissions;
using System.Windows.Forms;
namespace TextDataTextBoxComponent
{
// Component that adds a "Text" data format ToolboxItemCreatorCallback
// to the Toolbox. This component uses a custom ToolboxItem that
// creates a TextBox containing the text data.
public class TextDataTextBoxComponent : 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)
{
DataObject o = new DataObject((IDataObject)serializedObject);
string[] formats = o.GetFormats();
if (o.GetDataPresent("System.String", true))
{
string toolboxText = (string)(o.GetData("System.String", true));
return (new TextToolboxItem(toolboxText));
}
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.
public class TextToolboxItem : 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.
protected override IComponent[] CreateComponentsCore(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;
}
}
}
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Drawing.Design
Imports System.Security.Permissions
Imports System.Windows.Forms
' Component that adds a "Text" data format ToolboxItemCreatorCallback
' to the Toolbox. This component uses a custom ToolboxItem that
' creates a TextBox containing the text data.
<PermissionSetAttribute(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 (Value IsNot 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 (ts IsNot 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 (ts IsNot 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 o As New DataObject(CType(serializedObject, IDataObject))
Dim formats As String() = o.GetFormats()
If o.GetDataPresent("System.String", True) Then
Return New TextToolboxItem(CStr(o.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.
<PermissionSetAttribute(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.
<PermissionSetAttribute(SecurityAction.Demand, Name:="FullTrust")> _
Protected Overrides Function CreateComponentsCore(ByVal host As IDesignerHost) As IComponent()
Dim textbox As 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
설명
도구 상자에 배치된 특정 클립보드 데이터 형식의 개체에서 도구 상자 항목을 만드는 이 대리자 형식의 메서드 서명과 일치하는 메서드 시그니처를 사용하여 도구 상자 항목 작성자 메서드를 구현할 수 있습니다. 예를 들어 클립보드에서 도구 상자에 붙여넣은 텍스트를 저장할 도구를 만드는 TextBox 도구 상자 항목 작성자를 디자인할 수 있습니다. 이 메서드 AddCreator 를 IToolboxService 사용하여 도구 상자에 특정 데이터 형식에 대한 이벤트 처리기를 추가할 ToolboxItemCreatorCallback 수 있습니다. 매개 변수에는 serializedObject 데이터 개체가 포함됩니다.
대리자를 ToolboxItemCreatorCallback 만들 때 이벤트를 처리할 메서드를 식별합니다. 이벤트를 이벤트 처리기와 연결하려면 대리자의 인스턴스를 이벤트에 추가합니다. 대리자를 제거하지 않는 한 이벤트가 발생할 때마다 이벤트 처리기가 호출됩니다. 이벤트 처리기 대리자에 대한 자세한 내용은 이벤트 처리 및 발생을 참조하세요.
확장명 메서드
| Name | Description |
|---|---|
| GetMethodInfo(Delegate) |
지정된 대리자가 나타내는 메서드를 나타내는 개체를 가져옵니다. |