ToolboxItem Klas

Definitie

Biedt een basis implementatie van een werksetitem.

public ref class ToolboxItem : System::Runtime::Serialization::ISerializable
[System.Serializable]
public class ToolboxItem : System.Runtime.Serialization.ISerializable
[<System.Serializable>]
type ToolboxItem = class
    interface ISerializable
Public Class ToolboxItem
Implements ISerializable
Overname
ToolboxItem
Afgeleid
Kenmerken
Implementeringen

Voorbeelden

Het volgende codevoorbeeld bevat een onderdeel dat gebruikmaakt van de IToolboxService interface om een handler voor tekstgegevensindeling of ToolboxItemCreatorCallback, toe te voegen aan de werkset. De terugbeldeleg van de maker van de gegevens geeft alle tekstgegevens door die in de werkset zijn geplakt en naar een formulier worden gesleept naar een aangepast formulier ToolboxItem waarmee een TextBox tekst wordt gemaakt.

#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

In het volgende codevoorbeeld ziet u het gebruik van de ToolboxItem klasse als basisklasse voor een implementatie van een aangepast werksetitem.

using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;
using System.Runtime.Serialization;
using System.Windows.Forms;

namespace CustomToolboxItem;

public class Form1 : Form
{
    readonly IContainer _components;
    UserControl1 userControl11;
    Label label1;

    public Form1() => InitializeComponent();

    void InitializeComponent()
    {
        label1 = new Label();
        userControl11 = new UserControl1();
        SuspendLayout();
        // 
        // label1
        // 
        label1.Location = new Point(15, 16);
        label1.Name = "label1";
        label1.Size = new Size(265, 62);
        label1.TabIndex = 0;
        label1.Text = "Build the project and drop UserControl1 from the toolbox onto the form.";
        // 
        // userControl11
        // 
        userControl11.LabelText = "This is a custom user control.  The text you see here is provided by a custom too" +
            "lbox item when the user control is dropped on the form.";
        userControl11.Location = new Point(74, 81);
        userControl11.Name = "userControl11";
        userControl11.Padding = new Padding(6);
        userControl11.Size = new Size(150, 150);
        userControl11.TabIndex = 1;
        // 
        // Form1
        // 
        ClientSize = new Size(292, 266);
        Controls.Add(userControl11);
        Controls.Add(label1);
        Name = "Form1";
        Text = "Form1";
        ResumeLayout(false);
    }

    protected override void Dispose(bool disposing)
    {
        if (disposing && (_components != null))
        {
            _components.Dispose();
        }
        base.Dispose(disposing);
    }

    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }
}

// Configure this user control to have a custom toolbox item.
[ToolboxItem(typeof(MyToolboxItem))]
public class UserControl1 : UserControl
{
    readonly IContainer _components;
    Label label1;

    public UserControl1() => InitializeComponent();

    public string LabelText
    {
        get => label1.Text; set => label1.Text = value;
    }

    void InitializeComponent()
    {
        label1 = new Label();
        SuspendLayout();
        // 
        // label1
        // 
        label1.Dock = DockStyle.Fill;
        label1.Location = new Point(6, 6);
        label1.Name = "label1";
        label1.Size = new Size(138, 138);
        label1.TabIndex = 0;
        label1.Text = "This is a custom user control.  " +
            "The text you see here is provided by a custom toolbox" +
            " item when the user control is dropped on the form.\r\n";
        label1.TextAlign =
            ContentAlignment.MiddleCenter;
        // 
        // UserControl1
        // 
        Controls.Add(label1);
        Name = "UserControl1";
        Padding = new Padding(6);
        ResumeLayout(false);
    }

    protected override void Dispose(bool disposing)
    {
        if (disposing && (_components != null))
        {
            _components.Dispose();
        }
        base.Dispose(disposing);
    }
}

// Toolbox items must be serializable.
[Serializable]
class MyToolboxItem : ToolboxItem
{
    // The add components dialog in Visual Studio looks for a public
    // constructor that takes a type.
    public MyToolboxItem(Type toolType)
        : base(toolType)
    {
    }

    // And you must provide this special constructor for serialization.
    // If you add additional data to MyToolboxItem that you
    // want to serialize, you may override Deserialize and
    // Serialize methods to add that data.  
    MyToolboxItem(SerializationInfo info, StreamingContext context) => Deserialize(info, context);

    // Let's override the creation code and pop up a dialog.
    protected override IComponent[] CreateComponentsCore(
        System.ComponentModel.Design.IDesignerHost host,
        System.Collections.IDictionary defaultValues)
    {
        // Get the string we want to fill in the custom
        // user control.  If the user cancels out of the dialog,
        // return null or an empty array to signify that the 
        // tool creation was canceled.
        using (ToolboxItemDialog d = new())
        {
            if (d.ShowDialog() == DialogResult.OK)
            {
                string text = d.CreationText;

                IComponent[] comps =
                    base.CreateComponentsCore(host, defaultValues);
                // comps will have a single component: our data type.
                ((UserControl1)comps[0]).LabelText = text;
                return comps;
            }
            else
            {
                return null;
            }
        }
    }
}

public class ToolboxItemDialog : Form
{
    readonly IContainer _components;
    Label label1;
    TextBox textBox1;
    Button button1;
    Button button2;

    public ToolboxItemDialog() => InitializeComponent();

    void InitializeComponent()
    {
        label1 = new Label();
        textBox1 = new TextBox();
        button1 = new Button();
        button2 = new Button();
        SuspendLayout();
        // 
        // label1
        // 
        label1.Location = new Point(10, 9);
        label1.Name = "label1";
        label1.Size = new Size(273, 43);
        label1.TabIndex = 0;
        label1.Text = "Enter the text you would like" +
            " to have the user control populated with:";
        // 
        // textBox1
        // 
        textBox1.AutoSize = false;
        textBox1.Location = new Point(10, 58);
        textBox1.Multiline = true;
        textBox1.Name = "textBox1";
        textBox1.Size = new Size(270, 67);
        textBox1.TabIndex = 1;
        textBox1.Text = "This is a custom user control.  " +
            "The text you see here is provided by a custom toolbox" +
            " item when the user control is dropped on the form.";
        // 
        // button1
        // 
        button1.DialogResult = DialogResult.OK;
        button1.Location = new Point(124, 131);
        button1.Name = "button1";
        button1.TabIndex = 2;
        button1.Text = "OK";
        // 
        // button2
        // 
        button2.DialogResult = DialogResult.Cancel;
        button2.Location = new Point(205, 131);
        button2.Name = "button2";
        button2.TabIndex = 3;
        button2.Text = "Cancel";
        // 
        // ToolboxItemDialog
        // 
        AcceptButton = button1;
        CancelButton = button2;
        ClientSize = new Size(292, 162);
        ControlBox = false;
        Controls.Add(button2);
        Controls.Add(button1);
        Controls.Add(textBox1);
        Controls.Add(label1);
        FormBorderStyle =
            FormBorderStyle.FixedDialog;
        Name = "ToolboxItemDialog";
        Text = "ToolboxItemDialog";
        ResumeLayout(false);
    }

    public string CreationText => textBox1.Text;

    protected override void Dispose(bool disposing)
    {
        if (disposing && (_components != null))
        {
            _components.Dispose();
        }
        base.Dispose(disposing);
    }
}
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Drawing
Imports System.Drawing.Design
Imports System.Runtime.Serialization
Imports System.Text
Imports System.Windows.Forms



Public Class Form1
    Inherits Form
    Private components As System.ComponentModel.IContainer = Nothing
    Friend WithEvents UserControl11 As UserControl1
    Friend WithEvents label1 As System.Windows.Forms.Label

    Public Sub New() 
        InitializeComponent()
    End Sub
    
    
    Private Sub InitializeComponent() 
        Me.label1 = New System.Windows.Forms.Label
        Me.UserControl11 = New UserControl1
        Me.SuspendLayout()
        '
        'label1
        '
        Me.label1.Location = New System.Drawing.Point(15, 16)
        Me.label1.Name = "label1"
        Me.label1.Size = New System.Drawing.Size(265, 62)
        Me.label1.TabIndex = 0
        Me.label1.Text = "Build the project and drop UserControl1" + _
            " from the toolbox onto the form."
        '
        'UserControl11
        '
        Me.UserControl11.LabelText = "This is a custom user control.  " + _
            "The text you see here is provided by a custom too" + _
            "lbox item when the user control is dropped on the form."
        Me.UserControl11.Location = New System.Drawing.Point(74, 85)
        Me.UserControl11.Name = "UserControl11"
        Me.UserControl11.Padding = New System.Windows.Forms.Padding(6)
        Me.UserControl11.TabIndex = 1
        '
        'Form1
        '
        Me.ClientSize = New System.Drawing.Size(292, 266)
        Me.Controls.Add(Me.UserControl11)
        Me.Controls.Add(Me.label1)
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)
    End Sub
     
    
    Protected Overrides Sub Dispose(ByVal disposing As Boolean) 
        If disposing AndAlso (components IsNot Nothing) Then
            components.Dispose()
        End If
        MyBase.Dispose(disposing)
    End Sub
    
    
    Shared Sub Main() 
        Application.EnableVisualStyles()
        Application.Run(New Form1())
    End Sub
End Class

' Configure this user control to have a custom toolbox item.
<ToolboxItem(GetType(MyToolboxItem))> _
Public Class UserControl1
    Inherits UserControl
    Private components As System.ComponentModel.IContainer = Nothing
    Private label1 As System.Windows.Forms.Label


    Public Sub New()
        InitializeComponent()
    End Sub


    Public Property LabelText() As String
        Get
            Return label1.Text
        End Get
        Set(ByVal value As String)
            label1.Text = Value
        End Set
    End Property


    Private Sub InitializeComponent()
        Me.label1 = New System.Windows.Forms.Label()
        Me.SuspendLayout()
        ' 
        ' label1
        ' 
        Me.label1.Dock = System.Windows.Forms.DockStyle.Fill
        Me.label1.Location = New System.Drawing.Point(6, 6)
        Me.label1.Name = "label1"
        Me.label1.Size = New System.Drawing.Size(138, 138)
        Me.label1.TabIndex = 0
        Me.label1.Text = "This is a custom user control.  " + _
            "The text you see here is provided by a custom toolbox" + _
            " item when the user control is dropped on the form." + _
            vbCr + vbLf
        Me.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
        ' 
        ' UserControl1
        ' 
        Me.Controls.Add(label1)
        Me.Name = "UserControl1"
        Me.Padding = New System.Windows.Forms.Padding(6)
        Me.ResumeLayout(False)
    End Sub


    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing AndAlso (components IsNot Nothing) Then
            components.Dispose()
        End If
        MyBase.Dispose(disposing)
    End Sub
End Class

' Toolbox items must be serializable.
<Serializable()> _
Class MyToolboxItem
    Inherits ToolboxItem

    ' The add components dialog in Visual Studio looks for a public
    ' constructor that takes a type.
    Public Sub New(ByVal toolType As Type)
        MyBase.New(toolType)
    End Sub


    ' And you must provide this special constructor for serialization.
    ' If you add additional data to MyToolboxItem that you
    ' want to serialize, you may override Deserialize and
    ' Serialize methods to add that data.  
    Sub New(ByVal info As SerializationInfo, _
        ByVal context As StreamingContext)
        Deserialize(info, context)
    End Sub


    ' Let's override the creation code and pop up a dialog.
    Protected Overrides Function CreateComponentsCore( _
        ByVal host As System.ComponentModel.Design.IDesignerHost, _
        ByVal defaultValues As System.Collections.IDictionary) _
        As IComponent()
        ' Get the string we want to fill in the custom
        ' user control.  If the user cancels out of the dialog,
        ' return null or an empty array to signify that the 
        ' tool creation was canceled.
        Using d As New ToolboxItemDialog()
            If d.ShowDialog() = DialogResult.OK Then
                Dim [text] As String = d.CreationText
                Dim comps As IComponent() = _
                    MyBase.CreateComponentsCore(host, defaultValues)
                ' comps will have a single component: our data type.
                CType(comps(0), UserControl1).LabelText = [text]
                Return comps
            Else
                Return Nothing
            End If
        End Using
    End Function
End Class


Public Class ToolboxItemDialog
    Inherits Form
    Private components As System.ComponentModel.IContainer = Nothing
    Private label1 As System.Windows.Forms.Label
    Private textBox1 As System.Windows.Forms.TextBox
    Private button1 As System.Windows.Forms.Button
    Private button2 As System.Windows.Forms.Button
    
    
    Public Sub New() 
        InitializeComponent()
    End Sub
    
    Private Sub InitializeComponent() 
        Me.label1 = New System.Windows.Forms.Label()
        Me.textBox1 = New System.Windows.Forms.TextBox()
        Me.button1 = New System.Windows.Forms.Button()
        Me.button2 = New System.Windows.Forms.Button()
        Me.SuspendLayout()
        ' 
        ' label1
        ' 
        Me.label1.Location = New System.Drawing.Point(10, 9)
        Me.label1.Name = "label1"
        Me.label1.Size = New System.Drawing.Size(273, 43)
        Me.label1.TabIndex = 0
        Me.label1.Text = "Enter the text you would like" + _
            " to have the user control populated with:"
        ' 
        ' textBox1
        ' 
        Me.textBox1.AutoSize = False
        Me.textBox1.Location = New System.Drawing.Point(10, 58)
        Me.textBox1.Multiline = True
        Me.textBox1.Name = "textBox1"
        Me.textBox1.Size = New System.Drawing.Size(270, 67)
        Me.textBox1.TabIndex = 1
        Me.textBox1.Text = "This is a custom user control.  " + _
            "The text you see here is provided by a custom toolbox" + _
            " item when the user control is dropped on the form."
        ' 
        ' button1
        ' 
        Me.button1.DialogResult = System.Windows.Forms.DialogResult.OK
        Me.button1.Location = New System.Drawing.Point(124, 131)
        Me.button1.Name = "button1"
        Me.button1.TabIndex = 2
        Me.button1.Text = "OK"
        ' 
        ' button2
        ' 
        Me.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.button2.Location = New System.Drawing.Point(205, 131)
        Me.button2.Name = "button2"
        Me.button2.TabIndex = 3
        Me.button2.Text = "Cancel"
        ' 
        ' ToolboxItemDialog
        ' 
        Me.AcceptButton = Me.button1
        Me.CancelButton = Me.button2
        Me.ClientSize = New System.Drawing.Size(292, 162)
        Me.ControlBox = False
        Me.Controls.Add(button2)
        Me.Controls.Add(button1)
        Me.Controls.Add(textBox1)
        Me.Controls.Add(label1)
        Me.FormBorderStyle = _
            System.Windows.Forms.FormBorderStyle.FixedDialog
        Me.Name = "ToolboxItemDialog"
        Me.Text = "ToolboxItemDialog"
        Me.ResumeLayout(False)
    
    End Sub
    
    Public ReadOnly Property CreationText() As String 
        Get
            Return textBox1.Text
        End Get
    End Property
    
    
    Protected Overrides Sub Dispose(ByVal disposing As Boolean) 
        If disposing AndAlso (components IsNot Nothing) Then
            components.Dispose()
        End If
        MyBase.Dispose(disposing)
    
    End Sub
End Class

Opmerkingen

ToolboxItem is een basisklasse voor werksetitems die kunnen worden weergegeven in de werkset van een ontwerpomgeving. Een werksetitem vertegenwoordigt doorgaans een onderdeel dat moet worden gemaakt wanneer deze wordt aangeroepen in een ontwerpmodusdocument. De ToolboxItem klasse biedt de methoden en eigenschappen die nodig zijn om de werkset de weergave-eigenschappen voor het werksetitem te bieden, om een onderdeel of onderdelen te maken wanneer ze worden gebruikt, en om zichzelf te serialiseren en te deserialiseren voor persistentie binnen de werksetdatabase.

Een exemplaar van de ToolboxItem klasse kan worden geconfigureerd met een naam, bitmap en type dat moet worden gemaakt, zonder een klasse te maken die is afgeleid van ToolboxItem. De ToolboxItem klasse biedt ook een basisklasse voor implementaties van aangepaste werksetitems. Een aangepaste ToolboxItem functie kan meerdere onderdelen maken. Als u een aangepast werksetitem wilt implementeren, moet u de , Serializeen methoden afleiden ToolboxItem en Deserialize overschrijvenCreateComponentsCore.

De volgende eigenschappen en methoden moeten zo worden geconfigureerd dat een ToolboxItem correct functionerende functie heeft:

  • De DisplayName eigenschap geeft het label voor het werksetitem op wanneer deze wordt weergegeven in een werkset.

  • De TypeName eigenschap geeft de volledig gekwalificeerde naam op van het type onderdeel dat door het item wordt gemaakt. Als een afgeleide klasse meerdere onderdelen maakt, kan de TypeName eigenschap al dan niet worden gebruikt, afhankelijk van of een CreateComponentsCore methode overschrijven afhankelijk is van de waarde van deze eigenschap.

  • De AssemblyName eigenschap geeft de assembly op die het type van een onderdeel bevat dat door het item wordt gemaakt.

  • De Bitmap eigenschap geeft desgewenst een bitmapafbeelding op die naast de weergavenaam voor het werksetitem in de werkset moet worden weergegeven.

  • De Filter eigenschap bevat ToolboxItemFilterAttribute eventueel objecten die bepalen of het werksetitem voor een bepaald onderdeel kan worden gebruikt.

  • De CreateComponentsCore methode retourneert het onderdeelexemplaren of exemplaren om in te voegen waar dit hulpprogramma wordt gebruikt.

  • Met de Serialize methode wordt het werksetitem opgeslagen in een opgegeven SerializationInfo.

  • De Deserialize methode configureert het werksetitem van de statusgegevens in de opgegeven SerializationInfo.

  • De Initialize methode configureert het werksetitem om het opgegeven type onderdeel te maken, als de CreateComponentsCore methode niet is overschreven om zich anders te gedragen.

  • De Locked eigenschap geeft aan of de eigenschappen van het werksetitem kunnen worden gewijzigd. Een werksetitem wordt doorgaans vergrendeld nadat het is toegevoegd aan een werkset.

  • Met de Lock methode wordt een werksetitem vergrendeld.

  • De CheckUnlocked methode genereert een uitzondering als de Locked eigenschap is true.

Constructors

Name Description
ToolboxItem()

Initialiseert een nieuw exemplaar van de ToolboxItem klasse.

ToolboxItem(Type)

Initialiseert een nieuw exemplaar van de ToolboxItem klasse waarmee het opgegeven type onderdeel wordt gemaakt.

Eigenschappen

Name Description
AssemblyName

Hiermee haalt u de naam op van de assembly die het type of de typen bevat die door het werksetitem worden gemaakt.

Bitmap

Hiermee haalt u een bitmap op om het werksetitem in de werkset weer te geven.

Company

Hiermee haalt u de bedrijfsnaam op of stelt u deze ToolboxItemin.

ComponentType

Hiermee wordt het onderdeeltype voor dit ophaalt ToolboxItem.

DependentAssemblies

Hiermee haalt u het voor het werksetitem op of stelt u deze AssemblyName in.

Description

Hiermee haalt u de beschrijving op of stelt u deze ToolboxItemin.

DisplayName

Hiermee haalt u de weergavenaam voor het werksetitem op of stelt u deze in.

Filter

Hiermee haalt u het filter op of stelt u het filter in waarmee wordt bepaald of het werksetitem kan worden gebruikt voor een doelonderdeel.

IsTransient

Hiermee wordt een waarde opgehaald die aangeeft of het werksetitem tijdelijk is.

Locked

Hiermee wordt een waarde opgehaald die aangeeft of het ToolboxItem momenteel is vergrendeld.

OriginalBitmap

Hiermee haalt u de oorspronkelijke bitmap op die wordt gebruikt in de werkset voor dit item.

Properties

Hiermee haalt u een woordenlijst met eigenschappen op.

TypeName

Hiermee haalt u de volledig gekwalificeerde naam op IComponent van het type dat het werksetitem maakt wanneer het wordt aangeroepen.

Version

Haalt de versie hiervoor ToolboxItemop.

Methoden

Name Description
CheckUnlocked()

Genereert een uitzondering als het werksetitem momenteel is vergrendeld.

CreateComponents()

Hiermee maakt u de onderdelen die het werksetitem is geconfigureerd om te maken.

CreateComponents(IDesignerHost, IDictionary)

Hiermee maakt u de onderdelen die het werksetitem is geconfigureerd voor het maken, met behulp van de opgegeven ontwerphost en de standaardwaarden.

CreateComponents(IDesignerHost)

Hiermee maakt u de onderdelen die het werksetitem is geconfigureerd voor het maken, met behulp van de opgegeven designerhost.

CreateComponentsCore(IDesignerHost, IDictionary)

Hiermee maakt u een matrix met onderdelen wanneer het werksetitem wordt aangeroepen.

CreateComponentsCore(IDesignerHost)

Hiermee maakt u een onderdeel of een matrix met onderdelen wanneer het werksetitem wordt aangeroepen.

Deserialize(SerializationInfo, StreamingContext)

Laadt de status van het werksetitem van het opgegeven serialisatie-informatieobject.

Equals(Object)

Bepaalt of twee ToolboxItem exemplaren gelijk zijn.

FilterPropertyValue(String, Object)

Hiermee filtert u een eigenschapswaarde voordat u deze retourneert.

GetHashCode()

Retourneert de hash-code voor dit exemplaar.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
GetType(IDesignerHost, AssemblyName, String, Boolean)

Hiermee maakt u een exemplaar van het opgegeven type, optioneel met behulp van een opgegeven ontwerphost en assemblynaam.

GetType(IDesignerHost)

Hiermee kunt u toegang krijgen tot het type dat is gekoppeld aan het werksetitem.

Initialize(Type)

Initialiseert het huidige werksetitem met het opgegeven type dat moet worden gemaakt.

Lock()

Hiermee wordt het werksetitem vergrendeld en worden wijzigingen in de eigenschappen ervan voorkomen.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
OnComponentsCreated(ToolboxComponentsCreatedEventArgs)

Hiermee wordt de ComponentsCreated gebeurtenis gegenereerd.

OnComponentsCreating(ToolboxComponentsCreatingEventArgs)

Hiermee wordt de ComponentsCreating gebeurtenis gegenereerd.

Serialize(SerializationInfo, StreamingContext)

Hiermee wordt de status van het werksetitem opgeslagen in het opgegeven serialisatie-informatieobject.

ToString()

Retourneert een String waarde die de huidige ToolboxItemvertegenwoordigt.

ValidatePropertyType(String, Object, Type, Boolean)

Valideert dat een object van een bepaald type is.

ValidatePropertyValue(String, Object)

Hiermee valideert u een eigenschap voordat deze wordt toegewezen aan de eigenschappenwoordenlijst.

gebeurtenis

Name Description
ComponentsCreated

Vindt direct plaats nadat onderdelen zijn gemaakt.

ComponentsCreating

Treedt op wanneer onderdelen op het punt staan te worden gemaakt.

Expliciete interface-implementaties

Name Description
ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Zie de GetObjectData(SerializationInfo, StreamingContext) methode voor een beschrijving van dit lid.

Van toepassing op

Zie ook