ToolboxItemCreatorCallback Delegate
Assembly: System.Drawing (in system.drawing.dll)
'Declaration Public Delegate Function ToolboxItemCreatorCallback ( _ serializedObject As Object, _ format As String _ ) As ToolboxItem 'Usage Dim instance As New ToolboxItemCreatorCallback(AddressOf HandlerMethod)
/** @delegate */ public delegate ToolboxItem ToolboxItemCreatorCallback ( Object serializedObject, String format )
Not applicable.
Parameters
- serializedObject
The object which contains the data to create a ToolboxItem for.
- format
Return Value
The deserialized ToolboxItem object specified by serializedObject.You can implement a toolbox item creator method with a method signature matching the method signature of this delegate type that creates a toolbox item from any object of a particular clipboard data format placed on the toolbox. For example, you can design a toolbox item creator that creates a TextBox to store text pasted to the toolbox from the clipboard. You can use the AddCreator method of the IToolboxService to add a ToolboxItemCreatorCallback event handler for a particular data type to the toolbox. The serializedObject parameter contains the data object.
When you create a ToolboxItemCreatorCallback delegate, you identify the method that will handle the event. To associate the event with your event handler, add an instance of the delegate to the event. The event handler is called whenever the event occurs, unless you remove the delegate. For more information about event handler delegates, see Events and Delegates.
The following example provides a component that uses the IToolboxService to add a "Text" data format handler, or ToolboxItemCreatorCallback, to the toolbox. The data creator callback delegate passes any text data pasted to the toolbox and dragged onto a form to a custom ToolboxItem that creates a TextBox containing the text.
Imports System 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
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()
{
}
// ISite override to register TextBox creator
/** @property
*/
public System.ComponentModel.ISite get_Site()
{
return super.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);
}
}
// 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");
}
}
}
// 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;
}
}
// ToolboxItemCreatorCallback delegate format method to create
// the toolbox item.
private ToolboxItem CreateTextBoxForText(Object serializedObject,
String format)
{
DataObject o = new DataObject((IDataObject)serializedObject);
if (o.GetDataPresent("System.String", true))
{
String toolboxText = (String)(o.GetData("System.String", true));
return (new TextToolboxItem(toolboxText));
}
return null;
}
protected void Dispose(boolean disposing)
{
if (creatorAdded) {
RemoveTextTextBoxCreator();
}
}
}
// 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;
}
// 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 };
}
// Method to set the text property of a TextBox after it is initialized.
private void OnSetText(Control c, String text)
{
c.set_Text(text);
}
}
Windows 98, Windows Server 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
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.