IToolboxService Interface
Assembly: System.Drawing (in system.drawing.dll)
'Declaration <GuidAttribute("4BACD258-DE64-4048-BC4E-FEDBEF9ACB76")> _ <InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)> _ Public Interface IToolboxService 'Usage Dim instance As IToolboxService
/** @attribute GuidAttribute("4BACD258-DE64-4048-BC4E-FEDBEF9ACB76") */
/** @attribute InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) */
public interface IToolboxService
GuidAttribute("4BACD258-DE64-4048-BC4E-FEDBEF9ACB76") InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) public interface IToolboxService
Not applicable.
The IToolboxService interface provides properties and methods for adding and removing toolbox items and toolbox creator callback delegates, serializing and deserializing toolbox items, and retrieving toolbox state information and managing toolbox state.
You can retrieve information about the contents of the toolbox with the following methods:
-
The CategoryNames property indicates the categories currently available on the toolbox.
-
The SelectedCategory property indicates the currently selected toolbox category.
-
The GetToolboxItems method retrieves the items on the toolbox, optionally filtered by a specified toolbox category.
-
The GetSelectedToolboxItem method retrieves the currently selected ToolboxItem.
-
The SetSelectedToolboxItem method selects the specified ToolboxItem as the current toolbox item.
-
The IsSupported method indicates whether the specified serialized object, if it is a ToolboxItem, is supported by the specified designer host, or whether it matches the specified attributes.
-
The IsToolboxItem method indicates whether the specified serialized object is a ToolboxItem.
You can add and remove toolbox items with the following methods:
-
The AddToolboxItem method adds a ToolboxItem to the toolbox, creating the optionally specified category if it does not exist.
-
The AddLinkedToolboxItem method adds a ToolboxItem that is only enabled for the current project to the toolbox.
-
The RemoveToolboxItem method removes the specified ToolboxItem.
-
The AddCreator method adds a ToolboxItemCreatorCallback delegate capable of converting some type of data stored on the toolbox to a ToolboxItem.
-
The RemoveCreator method removes any ToolboxItemCreatorCallback delegates for the specified data type.
You can refresh the toolbox, mark a toolbox item as used, or set the mouse cursor to a cursor that represents the current toolbox item using the following methods:
-
The Refresh method refreshes the toolbox display to reflect the current state of the toolbox items.
-
The SelectedToolboxItemUsed method signals the toolbox that the selected toolbox item has been used.
-
The SetCursor method sets the mouse cursor to a cursor that represents the current toolbox item.
You can use the toolbox to serialize or deserialize a toolbox item using the following methods:
-
The DeserializeToolboxItem method attempts to return a ToolboxItem from the specified serialized toolbox item object.
-
The SerializeToolboxItem method returns a serialized object representing the specified ToolboxItem.
The following code example demonstrates the use of the IToolboxService in design mode to list and select toolbox categories and items, and to create components or controls from toolbox items and add them to a Form. To use the example, compile the code to an assembly, and add a reference to the assembly in a Windows Forms application. If you are using Visual Studio, the IToolboxServiceControl is automatically added to the Toolbox. Create an instance of the IToolboxServiceControl on a form to test its behavior.
Imports System Imports System.Collections Imports System.ComponentModel Imports System.ComponentModel.Design Imports System.Drawing Imports System.Drawing.Design Imports System.Data Imports System.Diagnostics Imports System.Reflection Imports System.Windows.Forms ' Provides an example control that functions in design mode to ' demonstrate use of the IToolboxService to list and select toolbox ' categories and items, and to add components or controls ' to the parent form using code. <DesignerAttribute(GetType(WindowMessageDesigner), GetType(IDesigner))> _ <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _ Public Class IToolboxServiceControl Inherits System.Windows.Forms.UserControl Private WithEvents listBox1 As System.Windows.Forms.ListBox Private listBox2 As System.Windows.Forms.ListBox Private toolboxService As IToolboxService = Nothing Private tools As ToolboxItemCollection Private controlSpacingMultiplier As Integer Public Sub New() InitializeComponent() AddHandler listBox2.DoubleClick, AddressOf Me.CreateComponent controlSpacingMultiplier = 0 End Sub ' Obtain or reset IToolboxService reference on each siting of control. Public Overrides Property Site() As System.ComponentModel.ISite Get Return MyBase.Site End Get Set(ByVal Value As System.ComponentModel.ISite) MyBase.Site = Value ' If the component was sited, attempt to obtain ' an IToolboxService instance. If (MyBase.Site IsNot Nothing) Then toolboxService = CType(Me.GetService(GetType(IToolboxService)), IToolboxService) ' If an IToolboxService instance was located, update the ' category list. If (toolboxService IsNot Nothing) Then UpdateLists() End If Else toolboxService = Nothing End If End Set End Property ' Updates the list of categories and the list of items in the ' selected category. Private Sub UpdateLists() If (toolboxService IsNot Nothing) Then RemoveHandler listBox1.SelectedIndexChanged, AddressOf Me.UpdateSelectedCategory RemoveHandler listBox2.SelectedIndexChanged, AddressOf Me.UpdateSelectedItem listBox1.Items.Clear() Dim i As Integer For i = 0 To toolboxService.CategoryNames.Count - 1 listBox1.Items.Add(toolboxService.CategoryNames(i)) If toolboxService.CategoryNames(i) = toolboxService.SelectedCategory Then listBox1.SelectedIndex = i tools = toolboxService.GetToolboxItems(toolboxService.SelectedCategory) listBox2.Items.Clear() Dim j As Integer For j = 0 To tools.Count - 1 listBox2.Items.Add(tools(j).DisplayName) Next j End If Next i AddHandler Me.listBox1.SelectedIndexChanged, AddressOf Me.UpdateSelectedCategory AddHandler Me.listBox2.SelectedIndexChanged, AddressOf Me.UpdateSelectedItem End If End Sub ' Sets the selected category when a category is clicked in the ' category list. Private Sub UpdateSelectedCategory(ByVal sender As Object, ByVal e As System.EventArgs) Handles listBox1.SelectedIndexChanged If (toolboxService IsNot Nothing) Then toolboxService.SelectedCategory = CStr(listBox1.SelectedItem) UpdateLists() End If End Sub ' Sets the selected item when an item is clicked in the item list. Private Sub UpdateSelectedItem(ByVal sender As Object, ByVal e As System.EventArgs) If (toolboxService IsNot Nothing) Then If listBox1.SelectedIndex <> -1 Then If CStr(listBox1.SelectedItem) = toolboxService.SelectedCategory Then toolboxService.SetSelectedToolboxItem(tools(listBox2.SelectedIndex)) Else UpdateLists() End If End If End If End Sub ' Creates a control from a double-clicked toolbox item and adds ' it to the parent form. Private Sub CreateComponent(ByVal sender As Object, ByVal e As EventArgs) ' Obtains an IDesignerHost service from design environment. Dim host As IDesignerHost = CType(Me.GetService(GetType(IDesignerHost)), IDesignerHost) ' Gets the project components container. (Windows Forms control ' containment depends on controls collections). Dim container As IContainer = host.Container ' Identifies the parent Form. Dim parentForm As System.Windows.Forms.Form = Me.FindForm() ' Retrieves the parent Form's designer host. Dim parentHost As IDesignerHost = CType(parentForm.Site.GetService(GetType(IDesignerHost)), IDesignerHost) ' Create the components. Dim comps As IComponent() = Nothing Try comps = toolboxService.GetSelectedToolboxItem().CreateComponents(parentHost) Catch ex As Exception ' Catch and show any exceptions to prevent ' disabling the control's UI. MessageBox.Show(ex.ToString(), "Exception message") End Try If comps Is Nothing Then Return End If ' Add any created controls to the parent form's controls ' collection. Note: components are added from the ' ToolboxItem.CreateComponents(IDesignerHost) method. Dim i As Integer For i = 0 To comps.Length - 1 If (parentForm IsNot Nothing) AndAlso CType(comps(i), Object).GetType().IsSubclassOf(GetType(System.Windows.Forms.Control)) Then CType(comps(i), System.Windows.Forms.Control).Location = New Point(20 * controlSpacingMultiplier, 20 * controlSpacingMultiplier) If controlSpacingMultiplier > 10 Then controlSpacingMultiplier = 0 Else controlSpacingMultiplier += 1 End If parentForm.Controls.Add(CType(comps(i), System.Windows.Forms.Control)) End If Next i End Sub ' Displays labels. Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) e.Graphics.DrawString("IToolboxService Control", New Font("Arial", 14), New SolidBrush(Color.Black), 6, 4) e.Graphics.DrawString("Category List", New Font("Arial", 8), New SolidBrush(Color.Black), 8, 26) e.Graphics.DrawString("Items in Category", New Font("Arial", 8), New SolidBrush(Color.Black), 208, 26) e.Graphics.DrawString("(Double-click item to add to parent form)", New Font("Arial", 7), New SolidBrush(Color.Black), 232, 12) End Sub Private Sub InitializeComponent() Me.listBox1 = New System.Windows.Forms.ListBox() Me.listBox2 = New System.Windows.Forms.ListBox() Me.SuspendLayout() Me.listBox1.Anchor = System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left Me.listBox1.Location = New System.Drawing.Point(8, 41) Me.listBox1.Name = "listBox1" Me.listBox1.Size = New System.Drawing.Size(192, 368) Me.listBox1.TabIndex = 0 Me.listBox2.Anchor = System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right Me.listBox2.Location = New System.Drawing.Point(208, 41) Me.listBox2.Name = "listBox2" Me.listBox2.Size = New System.Drawing.Size(228, 368) Me.listBox2.TabIndex = 3 Me.BackColor = System.Drawing.Color.Beige Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.listBox2, Me.listBox1}) Me.Location = New System.Drawing.Point(500, 400) Me.Name = "IToolboxServiceControl" Me.Size = New System.Drawing.Size(442, 422) Me.ResumeLayout(False) End Sub End Class ' This designer passes window messages to the controls at design time. Public Class WindowMessageDesigner Inherits System.Windows.Forms.Design.ControlDesigner Public Sub New() End Sub ' Window procedure override passes events to control. <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _ Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) If m.HWnd.Equals(Me.Control.Handle) Then MyBase.WndProc(m) Else Me.DefWndProc(m) End If End Sub End Class
package IToolboxServiceExample;
import System.*;
import System.Collections.*;
import System.ComponentModel.*;
import System.ComponentModel.Design.*;
import System.Drawing.*;
import System.Drawing.Design.*;
import System.Data.*;
import System.Diagnostics.*;
import System.Windows.Forms.*;
import System.Security.Permissions.*;
// Provides an example control that functions in design mode to
// demonstrate use of the IToolboxService to list and select toolbox
// categories and items, and to add components or controls
// to the parent form using code.
/** @attribute DesignerAttribute(WindowMessageDesigner.class,
IDesigner.class)
*/
public class IToolboxServiceControl extends System.Windows.Forms.UserControl
{
private System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.ListBox listBox2;
private IToolboxService toolboxService = null;
private ToolboxItemCollection tools;
private int controlSpacingMultiplier;
public IToolboxServiceControl()
{
InitializeComponent();
listBox2.add_DoubleClick(new EventHandler(this.CreateComponent));
controlSpacingMultiplier = 0;
} //IToolboxServiceControl()
// Obtain or reset IToolboxService reference on each siting of control.
/** @property
*/
public System.ComponentModel.ISite get_Site()
{
return super.get_Site();
} // get_Site
/** @property
*/
public void set_Site(System.ComponentModel.ISite value)
{
super.set_Site(value);
// If the component was sited, attempt to obtain
// an IToolboxService instance.
if (super.get_Site() != null) {
toolboxService = (IToolboxService)this.GetService(
IToolboxService.class.ToType());
// If an IToolboxService was located, update the
// category list.
if (toolboxService != null) {
UpdateLists();
}
}
else {
toolboxService = null;
}
} //set_Site
// Updates the list of categories and the list of items in the
//selected category.
/** @attribute SecurityPermissionAttribute(SecurityAction.Demand, Flags=SecurityPermissionFlag.UnmanagedCode)
*/
private void UpdateLists()
{
if (toolboxService != null) {
this.listBox1.remove_SelectedIndexChanged(new System.EventHandler(
this.UpdateSelectedCategory));
this.listBox2.remove_SelectedIndexChanged(new System.EventHandler(
this.UpdateSelectedItem));
listBox1.get_Items().Clear();
for (int i = 0; i < toolboxService.get_CategoryNames().
get_Count(); i++) {
listBox1.get_Items().Add(toolboxService.get_CategoryNames().
get_Item(i));
if (toolboxService.get_CategoryNames().get_Item(i).Equals(
toolboxService.get_SelectedCategory())) {
listBox1.set_SelectedIndex(i);
tools = toolboxService.GetToolboxItems(toolboxService.
get_SelectedCategory());
listBox2.get_Items().Clear();
for (int j = 0; j < tools.get_Count(); j++) {
listBox2.get_Items().Add(tools.get_Item(j).
get_DisplayName());
}
}
}
this.listBox1.add_SelectedIndexChanged(new System.EventHandler(
this.UpdateSelectedCategory));
this.listBox2.add_SelectedIndexChanged(new System.EventHandler(
this.UpdateSelectedItem));
}
} //UpdateLists
// Sets the selected category when a category is clicked in the
// category list.
private void UpdateSelectedCategory(Object sender, System.EventArgs e)
{
if (toolboxService != null) {
toolboxService.set_SelectedCategory(listBox1.get_SelectedItems().
ToString());
UpdateLists();
}
} //UpdateSelectedCategory
// Sets the selected item when an item is clicked in the item list.
private void UpdateSelectedItem(Object sender, System.EventArgs e)
{
if (toolboxService != null) {
if (listBox1.get_SelectedIndex() != -1) {
if ((listBox1.get_SelectedItem().ToString()).Equals(
toolboxService.get_SelectedCategory())) {
toolboxService.SetSelectedToolboxItem(tools.get_Item(
listBox2.get_SelectedIndex()));
}
else {
UpdateLists();
}
}
}
} //UpdateSelectedItem
// Creates a control from a double-clicked toolbox item and adds
// it to the parent form.
private void CreateComponent(Object sender, EventArgs e)
{
// Obtains an IDesignerHost service from design environment.
IDesignerHost host = (IDesignerHost)this.GetService(
IDesignerHost.class.ToType());
// Get the project components container (Windows Forms control
// containment depends on controls collections).
IContainer container = host.get_Container();
// Identifies the parent Form.
System.Windows.Forms.Form parentForm = this.FindForm();
// Retrieves the parent Form's designer host.
IDesignerHost parentHost = (IDesignerHost)parentForm.get_Site().
GetService(IDesignerHost.class.ToType());
// Create the components.
IComponent comps[] = null;
try {
comps = toolboxService.GetSelectedToolboxItem().
CreateComponents(parentHost);
}
catch (System.Exception ex) {
// Catch and show any exceptions to prevent disabling
// the control's UI.
MessageBox.Show(ex.ToString(), "Exception message");
}
if (comps == null) {
return;
}
// Add any created controls to the parent form's controls
// collection. Note: components are added from the
// ToolboxItem.CreateComponents(IDesignerHost) method.
for (int i = 0; i < comps.length; i++) {
if ((parentForm != null) && (comps[i].GetType().IsSubclassOf(
System.Windows.Forms.Control.class.ToType()))) {
((System.Windows.Forms.Control)comps[i]).set_Location(
new Point(20 * controlSpacingMultiplier, 20
* controlSpacingMultiplier));
if (controlSpacingMultiplier > 10) {
controlSpacingMultiplier = 0;
}
else {
controlSpacingMultiplier++;
}
parentForm.get_Controls().Add((System.Windows.Forms.
Control)comps[i]);
}
}
} //CreateComponent
// Displays labels.
protected void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
e.get_Graphics().DrawString("IToolboxService Control", new Font(
"Arial", 14), new SolidBrush(Color.get_Black()), 6, 4);
e.get_Graphics().DrawString("Category List", new Font("Arial", 8),
new SolidBrush(Color.get_Black()), 8, 26);
e.get_Graphics().DrawString("Items in Category", new Font("Arial", 8),
new SolidBrush(Color.get_Black()), 208, 26);
e.get_Graphics().DrawString("(Double-click item to add to parent form)",
new Font("Arial", 7), new SolidBrush(Color.get_Black()), 232, 12);
} //OnPaint
private void InitializeComponent()
{
this.listBox1 = new System.Windows.Forms.ListBox();
this.listBox2 = new System.Windows.Forms.ListBox();
this.SuspendLayout();
this.listBox1.set_Anchor(System.Windows.Forms.AnchorStyles.Top
| System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.
AnchorStyles.Left);
this.listBox1.set_Location(new System.Drawing.Point(8, 41));
this.listBox1.set_Name("listBox1");
this.listBox1.set_Size(new System.Drawing.Size(192, 368));
this.listBox1.set_TabIndex(0);
this.listBox1.add_SelectedIndexChanged(new System.EventHandler(this.
UpdateSelectedCategory));
this.listBox2.set_Anchor(System.Windows.Forms.AnchorStyles.Top
| System.Windows.Forms.AnchorStyles.Bottom | System.Windows.
Forms.AnchorStyles. Left | System.Windows.Forms.AnchorStyles.
Right);
this.listBox2.set_Location(new System.Drawing.Point(208, 41));
this.listBox2.set_Name("listBox2");
this.listBox2.set_Size(new System.Drawing.Size(228, 368));
this.listBox2.set_TabIndex(3);
this.set_BackColor(System.Drawing.Color.get_Beige());
this.get_Controls().AddRange(new System.Windows.Forms.Control[] {this.
listBox2, this.listBox1});
this.set_Location(new System.Drawing.Point(500, 400));
this.set_Name("IToolboxServiceControl");
this.set_Size(new System.Drawing.Size(442, 422));
this.ResumeLayout(false);
} //InitializeComponent
} //IToolboxServiceControl
// This designer passes window messages to the controls at design time.
public class WindowMessageDesigner
extends System.Windows.Forms.Design.ControlDesigner
{
public WindowMessageDesigner()
{
} //WindowMessageDesigner
// Window procedure override passes events to control.
/** @attribute SecurityPermissionAttribute(SecurityAction.Demand, Flags=SecurityPermissionFlag.UnmanagedCode)
*/
protected void WndProc(System.Windows.Forms.Message m)
{
if (m.get_HWnd().Equals(this.get_Control().get_Handle())) {
super.WndProc(m);
}
else {
this.DefWndProc(m);
}
} //WndProc
} //WindowMessageDesigner
The following code 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.