IToolboxService インターフェイスとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > IToolboxService インターフェイスの意味・解説 

IToolboxService インターフェイス

開発環境ツールボックス管理クエリを行うメソッドプロパティ提供します

名前空間: System.Drawing.Design
アセンブリ: System.Drawing (system.drawing.dll 内)
構文構文

<GuidAttribute("4BACD258-DE64-4048-BC4E-FEDBEF9ACB76")>
 _
<InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)> _
Public Interface IToolboxService
Dim instance As IToolboxService
[GuidAttribute("4BACD258-DE64-4048-BC4E-FEDBEF9ACB76")] 
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
public interface IToolboxService
[GuidAttribute(L"4BACD258-DE64-4048-BC4E-FEDBEF9ACB76")] 
[InterfaceTypeAttribute(ComInterfaceType::InterfaceIsIUnknown)] 
public interface class 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
解説解説

IToolboxService インターフェイスは、ツールボックス項目とツールボックス クリエータコールバック デリゲート追加削除ツールボックス項目のシリアル化と逆シリアル化、および、ツールボックスの状態に関して情報検索管理を行うためのプロパティメソッド提供します

次のメソッド使用してツールボックス内容に関する情報検索できます

次のメソッド使用してツールボックス項目を追加および削除できます

以下のメソッド使用してツールボックス最新情報更新するツールボックス項目に使用マーク付ける、またはマウス カーソル現在のツールボックス項目を表すようにカーソル設定できます

以下のメソッド使用してツールボックスツールボックス項目のシリアル化または逆シリアル化を行うことができます

使用例使用例

IToolboxServiceデザイン モード使用してツールボックスカテゴリと項目の一覧を取得して選択しツールボックスの項目からコンポーネントまたはコントロール作成してForm追加するコード例次に示します。この例を使用するには、コードアセンブリコンパイルし、Windows フォーム アプリケーションでこのアセンブリ対す参照追加しますVisual Studio使用している場合IToolboxServiceControlツールボックス自動的に追加されます。フォームIToolboxServiceControlインスタンス作成すると、その動作テストできます

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 Not (MyBase.Site
 Is Nothing) Then
                toolboxService = CType(Me.GetService(GetType(IToolboxService)),
 IToolboxService)
                ' If an IToolboxService instance was located, update
 the 
                ' category list.
                If Not (toolboxService Is
 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 Not (toolboxService Is
 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 Not (toolboxService Is
 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 Not (toolboxService Is
 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 Not (parentForm Is
 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
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Drawing.Design;
using System.Data;
using System.Diagnostics;
using System.Windows.Forms;

namespace IToolboxServiceExample
{    
    // 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(typeof(WindowMessageDesigner), typeof(IDesigner))]
    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand,
 Name = "FullTrust")] 
    public class IToolboxServiceControl : 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.DoubleClick += new EventHandler(this.CreateComponent);
            controlSpacingMultiplier = 0;
        }
        
        // Obtain or reset IToolboxService reference on each siting
 of control.
        public override System.ComponentModel.ISite Site
        {
            get
            {
                return base.Site;
            }
            set
            {     
                base.Site = value;

                // If the component was sited, attempt to obtain 
                // an IToolboxService instance.
                if( base.Site != null
 )
                {
                    toolboxService = (IToolboxService)this.GetService(typeof(IToolboxService));
                    // If an IToolboxService was located, update the
 
                    // category list.
                    if( toolboxService != null
 )
                        UpdateLists();                    
                }
                else
                    toolboxService = null;
            }
        }

        // Updates the list of categories and the list of items in the
 
        // selected category.
        private void UpdateLists()
        {
            if( toolboxService != null )
            {
                this.listBox1.SelectedIndexChanged -= new
 System.EventHandler(this.UpdateSelectedCategory);
                this.listBox2.SelectedIndexChanged -= new
 System.EventHandler(this.UpdateSelectedItem);
                listBox1.Items.Clear();
                for( int i=0; i<toolboxService.CategoryNames.Count;
 i++ )
                {
                    listBox1.Items.Add( toolboxService.CategoryNames[i] );
                    if( toolboxService.CategoryNames[i] == toolboxService.SelectedCategory
 )
                    {
                        listBox1.SelectedIndex = i;                        
                        tools = toolboxService.GetToolboxItems( toolboxService.SelectedCategory
 );
                        listBox2.Items.Clear();
                        for( int j=0; j<tools.Count;
 j++ )
                            listBox2.Items.Add( tools[j].DisplayName );
                    }
                }
                this.listBox1.SelectedIndexChanged += new
 System.EventHandler(this.UpdateSelectedCategory);
                this.listBox2.SelectedIndexChanged += new
 System.EventHandler(this.UpdateSelectedItem);
            }
        }

        // 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.SelectedCategory = (string)listBox1.SelectedItem;
                UpdateLists();
            }
        }

        // 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.SelectedIndex != -1 )
                {
                    if( (string)listBox1.SelectedItem
 == toolboxService.SelectedCategory )
                        toolboxService.SetSelectedToolboxItem(tools[listBox2.SelectedIndex]);
  
                    else
                        UpdateLists();
                }
            }            
        }   

        // 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(typeof(IDesignerHost));

            // Get the project components container (Windows Forms control
 
            // containment depends on controls collections).
            IContainer container = host.Container;
                        
            // Identifies the parent Form.
            System.Windows.Forms.Form parentForm = this.FindForm();

            // Retrieves the parent Form's designer host.
            IDesignerHost parentHost = (IDesignerHost)parentForm.Site.GetService(typeof(IDesignerHost));

            // Create the components.
            IComponent[] comps = null;
            try
            {
                 comps = toolboxService.GetSelectedToolboxItem().CreateComponents(parentHost);
            }
            catch(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(typeof(System.Windows.Forms.Control)) )
                {                    
                    ((System.Windows.Forms.Control)comps[i]).Location = new
 Point(20*controlSpacingMultiplier, 20*controlSpacingMultiplier);
                    if( controlSpacingMultiplier > 10 )
                        controlSpacingMultiplier = 0;
                    else
                        controlSpacingMultiplier++;
                    parentForm.Controls.Add( (System.Windows.Forms.Control)comps[i]
 );
                }
            }
        }

        // Displays labels.
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs
 e)
        {
            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);
        }  

        private void InitializeComponent()
        {
            this.listBox1 = new System.Windows.Forms.ListBox();
            this.listBox2 = new System.Windows.Forms.ListBox();
            this.SuspendLayout();
            this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles.Top
 | System.Windows.Forms.AnchorStyles.Bottom) 
                | System.Windows.Forms.AnchorStyles.Left);
            this.listBox1.Location = new System.Drawing.Point(8,
 41);
            this.listBox1.Name = "listBox1";
            this.listBox1.Size = new System.Drawing.Size(192,
 368);
            this.listBox1.TabIndex = 0;
            this.listBox1.SelectedIndexChanged += new
 System.EventHandler(this.UpdateSelectedCategory);
            this.listBox2.Anchor = (((System.Windows.Forms.AnchorStyles.Top
 | System.Windows.Forms.AnchorStyles.Bottom) 
                | System.Windows.Forms.AnchorStyles.Left) 
                | System.Windows.Forms.AnchorStyles.Right);
            this.listBox2.Location = new System.Drawing.Point(208,
 41);
            this.listBox2.Name = "listBox2";
            this.listBox2.Size = new System.Drawing.Size(228,
 368);
            this.listBox2.TabIndex = 3;
            this.BackColor = System.Drawing.Color.Beige;
            this.Controls.AddRange(new System.Windows.Forms.Control[]
 {
                                                                          this.listBox2
,
                                                                          this.listBox1});
            this.Location = new System.Drawing.Point(500,
 400);
            this.Name = "IToolboxServiceControl";
            this.Size = new System.Drawing.Size(442,
 422);
            this.ResumeLayout(false);
        }        
    }
    
    // This designer passes window messages to the controls at design
 time.    
    public class WindowMessageDesigner : System.Windows.Forms.Design.ControlDesigner
    {
        public WindowMessageDesigner()
        {
        }
        
        // Window procedure override passes events to control.
        [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand,
 Name="FullTrust")] 
        protected override void WndProc(ref
 System.Windows.Forms.Message m)
        {   
            if( m.HWnd == this.Control.Handle
 )
                base.WndProc(ref m);            
            else            
                this.DefWndProc(ref m);            
        }        
    }
}
#using <System.dll>
#using <System.Design.dll>
#using <System.Windows.Forms.dll>
#using <System.Data.dll>
#using <System.Drawing.dll>

using namespace System;
using namespace System::Collections;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::Drawing;
using namespace System::Drawing::Design;
using namespace System::Data;
using namespace System::Diagnostics;
using namespace System::Windows::Forms;
using namespace System::Security::Permissions;

namespace IToolboxServiceExample
{

   // This designer passes window messages to the controls at design
 time.
   public ref class WindowMessageDesigner:
 public System::Windows::Forms::Design::ControlDesigner
   {
   public:
      WindowMessageDesigner(){}

   protected:

      // Window procedure  passes events to control.

      [SecurityPermission(SecurityAction::Demand, Flags=SecurityPermissionFlag::UnmanagedCode)]
      virtual void WndProc( System::Windows::Forms::Message% m
 ) override
      {
         if ( m.HWnd == this->Control->Handle
 )
                  ControlDesigner::WndProc( m );
         else
                  ControlDesigner::DefWndProc( m );
      }
   };

   // 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(IToolboxServiceExample::WindowMessageDesigner::typeid,IDesigner::typeid)]
   public ref class IToolboxServiceControl:
 public System::Windows::Forms::UserControl
   {
   private:
      System::Windows::Forms::ListBox^ listBox1;
      System::Windows::Forms::ListBox^ listBox2;
      IToolboxService^ toolboxService;
      ToolboxItemCollection^ tools;
      int controlSpacingMultiplier;

   public:
      IToolboxServiceControl()
      {
         InitializeComponent();
         listBox2->DoubleClick += gcnew EventHandler( this,
 &IToolboxServiceControl::CreateComponent );
         controlSpacingMultiplier = 0;
      }

      property System::ComponentModel::ISite^ Site 
      {
         // Obtain or reset IToolboxService reference on each siting
 of control.
         virtual System::ComponentModel::ISite^ get() override
         {
            return __super::Site;
         }

         virtual void set( System::ComponentModel::ISite^
 value ) override
         {
            __super::Site = value;

            // If the component was sited, attempt to obtain
            // an IToolboxService instance.
            if ( __super::Site != nullptr )
            {
               toolboxService = dynamic_cast<IToolboxService^>(this->GetService(
 IToolboxService::typeid ));

               // If an IToolboxService was located, update the
               // category list.
               if ( toolboxService != nullptr )
                              UpdateLists();
            }
            else
                        toolboxService = nullptr;
         }
      }

   private:

      // Updates the list of categories and the list of items in the
      // selected category.
      [SecurityPermission(SecurityAction::Demand, Flags=SecurityPermissionFlag::UnmanagedCode)]
      void UpdateLists()
      {
         if ( toolboxService != nullptr )
         {
            this->listBox1->SelectedIndexChanged -= gcnew
 System::EventHandler( this, &IToolboxServiceControl::UpdateSelectedCategory
 );
            this->listBox2->SelectedIndexChanged -= gcnew
 System::EventHandler( this, &IToolboxServiceControl::UpdateSelectedItem
 );
            listBox1->Items->Clear();
            for ( int i = 0; i < toolboxService->CategoryNames->Count;
 i++ )
            {
               listBox1->Items->Add( toolboxService->CategoryNames[ i ]
 );
               if ( toolboxService->CategoryNames[ i ] == toolboxService->SelectedCategory
 )
               {
                  listBox1->SelectedIndex = i;
                  tools = toolboxService->GetToolboxItems( toolboxService->SelectedCategory
 );
                  listBox2->Items->Clear();
                  for ( int j = 0; j < tools->Count;
 j++ )
                     listBox2->Items->Add( tools[ j ]->DisplayName );
               }
            }
            this->listBox1->SelectedIndexChanged += gcnew
 System::EventHandler( this, &IToolboxServiceControl::UpdateSelectedCategory
 );
            this->listBox2->SelectedIndexChanged += gcnew
 System::EventHandler( this, &IToolboxServiceControl::UpdateSelectedItem
 );
         }
      }


      // Sets the selected category when a category is clicked in the
      // category list.
      void UpdateSelectedCategory( Object^ /*sender*/, System::EventArgs^
 /*e*/ )
      {
         if ( toolboxService != nullptr )
         {
            toolboxService->SelectedCategory = dynamic_cast<String^>(listBox1->SelectedItem);
            UpdateLists();
         }
      }

      // Sets the selected item when an item is clicked in the item
 list.
      void UpdateSelectedItem( Object^ /*sender*/, System::EventArgs^
 /*e*/ )
      {
         if ( toolboxService != nullptr )
         {
            if ( listBox1->SelectedIndex != -1 )
            {
               if ( dynamic_cast<String^>(listBox1->SelectedItem)
 == toolboxService->SelectedCategory )
                              toolboxService->SetSelectedToolboxItem( tools[ listBox2->SelectedIndex
 ] );
               else
                              UpdateLists();
            }
         }
      }

      // Creates a control from a double-clicked toolbox item and adds
      // it to the parent form.
      void CreateComponent( Object^ /*sender*/, EventArgs^ /*e*/
 )
      {
         // Obtains an IDesignerHost service from design environment.
         IDesignerHost^ host = dynamic_cast<IDesignerHost^>(this->GetService(
 IDesignerHost::typeid ));

         // Get the project components container (Windows Forms control
         // containment depends on controls collections).
         IContainer^ container = host->Container;

         // Identifies the parent Form.
         System::Windows::Forms::Form^ parentForm = this->FindForm();

         // Retrieves the parent Form's designer host.
         IDesignerHost^ parentHost = dynamic_cast<IDesignerHost^>(parentForm->Site->GetService(
 IDesignerHost::typeid ));

         // Create the components.
         array<IComponent^>^comps = nullptr;
         try
         {
            comps = toolboxService->GetSelectedToolboxItem()->CreateComponents(
 parentHost );
         }
         catch ( Exception^ ex ) 
         {
            // Catch and show any exceptions to prevent disabling
            // the control's UI.
            MessageBox::Show( ex->ToString(), "Exception message" );
         }

         if ( comps == nullptr )
                  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 != nullptr && comps[ i ]->GetType()->IsSubclassOf(
 System::Windows::Forms::Control::typeid ) )
            {
               (dynamic_cast<System::Windows::Forms::Control^>(comps[ i ]))->Location
 = Point(20 * controlSpacingMultiplier,20 * controlSpacingMultiplier);
               if ( controlSpacingMultiplier > 10 )
                              controlSpacingMultiplier = 0;
               else
                              controlSpacingMultiplier++;
               parentForm->Controls->Add( dynamic_cast<System::Windows::Forms::Control^>(comps[
 i ]) );
            }
         }
      }

   protected:

      // Displays labels.
      virtual void OnPaint( System::Windows::Forms::PaintEventArgs^
 e ) override
      {
         e->Graphics->DrawString( "IToolboxService Control", gcnew
 System::Drawing::Font( "Arial",14 ), gcnew SolidBrush( Color::Black ),
 6, 4 );
         e->Graphics->DrawString( "Category List", gcnew System::Drawing::Font(
 "Arial",8 ), gcnew SolidBrush( Color::Black ), 8, 26 );
         e->Graphics->DrawString( "Items in Category",
 gcnew System::Drawing::Font( "Arial",8 ), gcnew SolidBrush( Color::Black
 ), 208, 26 );
         e->Graphics->DrawString( "(Double-click item to add to parent
 form)", gcnew System::Drawing::Font( "Arial",7 ), gcnew SolidBrush(
 Color::Black ), 232, 12 );
      }

   private:
      void InitializeComponent()
      {
         this->listBox1 = gcnew System::Windows::Forms::ListBox;
         this->listBox2 = gcnew System::Windows::Forms::ListBox;
         this->SuspendLayout();
         this->listBox1->Anchor = static_cast<AnchorStyles>(System::Windows::Forms::AnchorStyles::Top
 | System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left);
         this->listBox1->Location = System::Drawing::Point(
 8, 41 );
         this->listBox1->Name = "listBox1";
         this->listBox1->Size = System::Drawing::Size( 192,
 368 );
         this->listBox1->TabIndex = 0;
         this->listBox1->SelectedIndexChanged += gcnew System::EventHandler(
 this, &IToolboxServiceControl::UpdateSelectedCategory );
         this->listBox2->Anchor = static_cast<AnchorStyles>(System::Windows::Forms::AnchorStyles::Top
 | System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left
 | System::Windows::Forms::AnchorStyles::Right);
         this->listBox2->Location = System::Drawing::Point(
 208, 41 );
         this->listBox2->Name = "listBox2";
         this->listBox2->Size = System::Drawing::Size( 228,
 368 );
         this->listBox2->TabIndex = 3;
         this->BackColor = System::Drawing::Color::Beige;
         array<System::Windows::Forms::Control^>^temp0 = {this->listBox2
,this->listBox1};
         this->Controls->AddRange( temp0 );
         this->Location = System::Drawing::Point( 500, 400
 );
         this->Name = "IToolboxServiceControl*";
         this->Size = System::Drawing::Size( 442, 422 );
         this->ResumeLayout( false );
      }
   };
}
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

IToolboxService使用してツールボックスに、"Text" データ形式ハンドラ追加したり、ToolboxItemCreatorCallback実行したりするコンポーネントコード例次に示しますデータ クリエータコールバック デリゲートは、テキスト データ渡してツールボックス貼り付けテキスト格納する TextBox作成するカスタム ToolboxItemフォームにそのテキスト データドラッグます。

Imports System
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Drawing.Design
Imports 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.
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.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 Not (Value Is
 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 Not (ts Is 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 Not (ts Is 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 formats As String()
 = CType(serializedObject, System.Windows.Forms.DataObject).GetFormats()
        If CType(serializedObject, System.Windows.Forms.DataObject).GetDataPresent("System.String",
 True) Then
            Return New TextToolboxItem(CStr(CType(serializedObject,
 System.Windows.Forms.DataObject).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.
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.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.
    <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand,
 Name:="FullTrust")> _
    Protected Overrides Function
 CreateComponentsCore(ByVal host As System.ComponentModel.Design.IDesignerHost)
 As System.ComponentModel.IComponent()
        Dim textbox As System.Windows.Forms.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
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Drawing.Design;
using System.Windows.Forms;

namespace TextDataTextBoxComponent
{
    // Component that adds a "Text" data format ToolboxItemCreatorCallback
 
    // to the Toolbox that creates a custom ToolboxItem that 
    // creates a TextBox containing the text data.
    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand,
 Name = "FullTrust")]
    public class TextDataTextBoxComponent :
 System.ComponentModel.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)
        {
            string[] formats = ((System.Windows.Forms.DataObject)serializedObject).GetFormats();
            if( ((System.Windows.Forms.DataObject)serializedObject).GetDataPresent("System.String",
 true) )           
                return new TextToolboxItem(
 (string)((System.Windows.Forms.DataObject)serializedObject).GetData("System.String",
 true) );            
            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.
    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand,
 Name = "FullTrust")] 
    public class TextToolboxItem : System.Drawing.Design.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.
        [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand,
 Name="FullTrust")] 
        protected override System.ComponentModel.IComponent[]
 CreateComponentsCore(System.ComponentModel.Design.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;
        }
    }
}
#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
 System::Drawing::Design::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<System::ComponentModel::IComponent^>^ CreateComponentsCore(
 System::ComponentModel::Design::IDesignerHost^ host ) override
      {
         System::Windows::Forms::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<System::ComponentModel::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 that creates a custom ToolboxItem that
   // creates a TextBox containing the text data.
   public ref class TextDataTextBoxComponent:
 public System::ComponentModel::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
 )
      {
         array<String^>^formats = (dynamic_cast<System::Windows::Forms::DataObject^>(serializedObject))->GetFormats();
         if ( (dynamic_cast<System::Windows::Forms::DataObject^>(serializedObject))->GetDataPresent(
 "System::String", true ) )
                  return gcnew TextToolboxItem( dynamic_cast<String^>((dynamic_cast<System::Windows::Forms::DataObject^>(serializedObject))->GetData(
 "System::String", true )) );

         return nullptr;
      }

   public:
      ~TextDataTextBoxComponent()
      {
         if ( creatorAdded )
                  RemoveTextTextBoxCreator();
      }
   };
}
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()
    {
    } //TextDataTextBoxComponent

    // ISite override to register TextBox creator
    /** @property 
     */
    public System.ComponentModel.ISite get_Site()
    {
        return super.get_Site();
    } //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);
        }
    } //set_Site

    // 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");
            }
        }
    } //AddTextTextBoxCreator

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

    // ToolboxItemCreatorCallback delegate format method to create 
    // the toolbox item.
    private ToolboxItem CreateTextBoxForText(Object serializedObject
,
        String format)
    {
        String formats[] = 
            ((System.Windows.Forms.DataObject)serializedObject).GetFormats();
        if (((System.Windows.Forms.DataObject)serializedObject).
            GetDataPresent("System.String", true)) {
            return new TextToolboxItem((String)
                (((System.Windows.Forms.DataObject)serializedObject).
                GetData("System.String", true)));
        }
        return null;
    } //CreateTextBoxForText

    protected void Dispose(boolean disposing)
    {
        if (creatorAdded) {
            RemoveTextTextBoxCreator();
        }
    } //Dispose
} //TextDataTextBoxComponent

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

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

    // Method to set the text property of a TextBox after it is initialized.
    private void OnSetText(Control c, String
 text)
    {
        c.set_Text(text);
    } //OnSetText
} //TextToolboxItem
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
IToolboxService メンバ
System.Drawing.Design 名前空間



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「IToolboxService インターフェイス」の関連用語

IToolboxService インターフェイスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



IToolboxService インターフェイスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS