Číst v angličtině

Sdílet prostřednictvím


ToolboxItem Třída

Definice

Poskytuje základní implementaci položky panelu nástrojů.

[System.Serializable]
public class ToolboxItem : System.Runtime.Serialization.ISerializable
public class ToolboxItem : System.Runtime.Serialization.ISerializable
Dědičnost
ToolboxItem
Odvozené
Atributy
Implementuje

Příklady

Následující příklad kódu poskytuje komponentu IToolboxService , která používá rozhraní k přidání obslužné rutiny formátu textových dat nebo ToolboxItemCreatorCallbackdo sady nástrojů. Delegát zpětného volání tvůrce dat předá všechna textová data vložená do panelu nástrojů a přetažená do formuláře do vlastního ToolboxItem , který vytvoří TextBox text.

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;
        }
    }
}

Následující příklad kódu ukazuje použití ToolboxItem třídy jako základní třídy pro vlastní implementaci položky panelu nástrojů.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;
using System.Data;
using System.Runtime.Serialization;
using System.Text;
using System.Windows.Forms;

namespace CustomToolboxItem
{
    public class Form1 : Form
    {
        private System.ComponentModel.IContainer components = null;
        private UserControl1 userControl11;
        private System.Windows.Forms.Label label1;

        public Form1()
        {
            InitializeComponent();
        }

        private void InitializeComponent()
        {
            this.label1 = new System.Windows.Forms.Label();
            this.userControl11 = new CustomToolboxItem.UserControl1();
            this.SuspendLayout();
            // 
            // label1
            // 
            this.label1.Location = new System.Drawing.Point(15, 16);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(265, 62);
            this.label1.TabIndex = 0;
            this.label1.Text = "Build the project and drop UserControl1 from the toolbox onto the form.";
            // 
            // userControl11
            // 
            this.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.";
            this.userControl11.Location = new System.Drawing.Point(74, 81);
            this.userControl11.Name = "userControl11";
            this.userControl11.Padding = new System.Windows.Forms.Padding(6);
            this.userControl11.Size = new System.Drawing.Size(150, 150);
            this.userControl11.TabIndex = 1;
            // 
            // Form1
            // 
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Controls.Add(this.userControl11);
            this.Controls.Add(this.label1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.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
    {
        private System.ComponentModel.IContainer components = null;
        private System.Windows.Forms.Label label1;

        public UserControl1()
        {
            InitializeComponent();
        }

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

        private void InitializeComponent()
        {
            this.label1 = new System.Windows.Forms.Label();
            this.SuspendLayout();
            // 
            // label1
            // 
            this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.label1.Location = new System.Drawing.Point(6, 6);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(138, 138);
            this.label1.TabIndex = 0;
            this.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";
            this.label1.TextAlign = 
                System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // UserControl1
            // 
            this.Controls.Add(this.label1);
            this.Name = "UserControl1";
            this.Padding = new System.Windows.Forms.Padding(6);
            this.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 ToolboxItemDialog())
            {
                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
    {
        private System.ComponentModel.IContainer components = null;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Button button2;

        public ToolboxItemDialog()
        {
            InitializeComponent();
        }

        private void InitializeComponent()
        {
            this.label1 = new System.Windows.Forms.Label();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.button1 = new System.Windows.Forms.Button();
            this.button2 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // label1
            // 
            this.label1.Location = new System.Drawing.Point(10, 9);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(273, 43);
            this.label1.TabIndex = 0;
            this.label1.Text = "Enter the text you would like" + 
                " to have the user control populated with:";
            // 
            // textBox1
            // 
            this.textBox1.AutoSize = false;
            this.textBox1.Location = new System.Drawing.Point(10, 58);
            this.textBox1.Multiline = true;
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(270, 67);
            this.textBox1.TabIndex = 1;
            this.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
            // 
            this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;
            this.button1.Location = new System.Drawing.Point(124, 131);
            this.button1.Name = "button1";
            this.button1.TabIndex = 2;
            this.button1.Text = "OK";
            // 
            // button2
            // 
            this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel;
            this.button2.Location = new System.Drawing.Point(205, 131);
            this.button2.Name = "button2";
            this.button2.TabIndex = 3;
            this.button2.Text = "Cancel";
            // 
            // ToolboxItemDialog
            // 
            this.AcceptButton = this.button1;
            this.CancelButton = this.button2;
            this.ClientSize = new System.Drawing.Size(292, 162);
            this.ControlBox = false;
            this.Controls.Add(this.button2);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.label1);
            this.FormBorderStyle = 
                System.Windows.Forms.FormBorderStyle.FixedDialog;
            this.Name = "ToolboxItemDialog";
            this.Text = "ToolboxItemDialog";
            this.ResumeLayout(false);
        }

        public string CreationText
        {
            get
            {
                return textBox1.Text;
            }
        }

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

Poznámky

ToolboxItem je základní třída pro položky panelu nástrojů, které lze zobrazit v panelu nástrojů v prostředí návrhu. Položka panelu nástrojů obvykle představuje komponentu, která se má vytvořit při vyvolání v dokumentu režimu návrhu. Třída ToolboxItem poskytuje metody a vlastnosti potřebné k poskytnutí panelu nástrojů s vlastnostmi zobrazení pro položku panelu nástrojů, vytvořit součást nebo komponenty při použití a serializovat a deserializovat sám pro trvalost v rámci databáze sady nástrojů.

Instanci ToolboxItem třídy je možné nakonfigurovat pomocí názvu, rastrového obrázku a typu, které se mají vytvořit, aniž by se vytvořila třída odvozená z ToolboxItemtřídy . Třída ToolboxItem také poskytuje základní třídu pro vlastní implementace položek panelu nástrojů. Vlastní ToolboxItem může vytvořit více komponent. Chcete-li implementovat vlastní položku panelu nástrojů, musíte odvodit ToolboxItem a přepsat CreateComponentsCoremetody , Serializea Deserialize .

Následující vlastnosti a metody musí být nakonfigurovány pro správné fungování objektu ToolboxItem :

  • Vlastnost DisplayName určuje popisek položky panelu nástrojů při zobrazení v panelu nástrojů.

  • Vlastnost TypeName určuje plně kvalifikovaný název typu komponenty, kterou položka vytvoří. Pokud odvozená třída vytváří více součástí, TypeName vlastnost může nebo nemusí být použita v závislosti na tom, zda CreateComponentsCore přepsání metody závisí na hodnotě této vlastnosti.

  • Vlastnost AssemblyName určuje sestavení, které obsahuje typ komponenty, kterou položka vytvoří.

  • Vlastnost Bitmap volitelně určuje rastrový obrázek, který se zobrazí vedle zobrazovaný název položky panelu nástrojů v sadě nástrojů.

  • Vlastnost Filter volitelně obsahuje všechny ToolboxItemFilterAttribute objekty, které určují, zda lze položku sady nástrojů použít v konkrétní komponentě.

  • Metoda CreateComponentsCore vrátí instanci komponenty nebo instance, které se mají vložit tam, kde se tento nástroj používá.

  • Metoda Serialize uloží položku panelu nástrojů do zadaného SerializationInfoobjektu .

  • Metoda Deserialize nakonfiguruje položku panelu nástrojů z informací o stavu obsažených v zadaném SerializationInfoobjektu .

  • Metoda Initialize nakonfiguruje položku panelu nástrojů tak, aby vytvořila zadaný typ komponenty, pokud CreateComponentsCore metoda nebyla přepsána tak, aby se chovala odlišně.

  • Vlastnost Locked označuje, zda lze změnit vlastnosti položky panelu nástrojů. Položka panelu nástrojů je obvykle uzamčena po přidání do sady nástrojů.

  • Metoda Lock uzamkne položku panelu nástrojů.

  • Metoda CheckUnlocked vyvolá výjimku, pokud Locked je truevlastnost .

Konstruktory

ToolboxItem()

Inicializuje novou instanci ToolboxItem třídy .

ToolboxItem(Type)

Inicializuje novou instanci ToolboxItem třídy, která vytvoří zadaný typ komponenty.

Vlastnosti

AssemblyName

Získá nebo nastaví název sestavení, které obsahuje typ nebo typy, které vytvoří položka panelu nástrojů.

Bitmap

Získá nebo nastaví rastrový obrázek představující položku panelu nástrojů v sadě nástrojů.

Company

Získá nebo nastaví název společnosti pro tento ToolboxItem.

ComponentType

Získá typ komponenty pro tento ToolboxItem.

DependentAssemblies

Získá nebo nastaví AssemblyName pro položku panelu nástrojů.

Description

Získá nebo nastaví popis tohoto ToolboxItemobjektu .

DisplayName

Získá nebo nastaví zobrazovaný název pro položku panelu nástrojů.

Filter

Získá nebo nastaví filtr, který určuje, zda položku sady nástrojů lze použít na cílové součásti.

IsTransient

Získá hodnotu označující, zda je položka sady nástrojů přechodná.

Locked

Získá hodnotu označující, zda ToolboxItem je aktuálně uzamčen.

OriginalBitmap

Získá nebo nastaví původní rastrový obrázek, který bude použit v panelu nástrojů pro tuto položku.

Properties

Získá slovník vlastností.

TypeName

Získá nebo nastaví plně kvalifikovaný název typu IComponent , který položka panelu nástrojů vytvoří při vyvolání.

Version

Získá verzi pro tento ToolboxItem.

Metody

CheckUnlocked()

Vyvolá výjimku, pokud je položka panelu nástrojů aktuálně uzamčena.

CreateComponents()

Vytvoří komponenty, které je položka panelu nástrojů nakonfigurována k vytvoření.

CreateComponents(IDesignerHost)

Vytvoří komponenty, které je položka panelu nástrojů nakonfigurována k vytvoření pomocí zadaného hostitele návrháře.

CreateComponents(IDesignerHost, IDictionary)

Vytvoří komponenty, které je položka panelu nástrojů nakonfigurována k vytvoření pomocí zadaného hostitele návrháře a výchozí hodnoty.

CreateComponentsCore(IDesignerHost)

Vytvoří součást nebo pole komponent při vyvolání položky panelu nástrojů.

CreateComponentsCore(IDesignerHost, IDictionary)

Vytvoří pole komponent při vyvolání položky panelu nástrojů.

Deserialize(SerializationInfo, StreamingContext)

Načte stav položky panelu nástrojů ze zadaného objektu serializace informací.

Equals(Object)

Určuje, zda jsou dvě ToolboxItem instance stejné.

FilterPropertyValue(String, Object)

Před vrácením hodnoty vlastnosti vyfiltruje.

GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
GetType(IDesignerHost)

Umožňuje přístup k typu přidruženému k položce panelu nástrojů.

GetType(IDesignerHost, AssemblyName, String, Boolean)

Vytvoří instanci zadaného typu, volitelně pomocí zadaného hostitele návrháře a názvu sestavení.

Initialize(Type)

Inicializuje aktuální položku panelu nástrojů se zadaným typem k vytvoření.

Lock()

Uzamkne položku panelu nástrojů a zabrání změnám jejích vlastností.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnComponentsCreated(ToolboxComponentsCreatedEventArgs)

ComponentsCreated Vyvolá událost.

OnComponentsCreating(ToolboxComponentsCreatingEventArgs)

ComponentsCreating Vyvolá událost.

Serialize(SerializationInfo, StreamingContext)

Uloží stav položky panelu nástrojů do zadaného objektu serializace informací.

ToString()

Vrátí hodnotu , String která představuje aktuální ToolboxItemhodnotu .

ValidatePropertyType(String, Object, Type, Boolean)

Ověří, jestli je objekt daného typu.

ValidatePropertyValue(String, Object)

Ověří vlastnost před jejím přiřazením do slovníku vlastností.

Událost

ComponentsCreated

Vyvolá se okamžitě po vytvoření komponent.

ComponentsCreating

Vyvolá se v případě, že se součásti mají vytvořit.

Explicitní implementace rozhraní

Platí pro

Viz také