IToolboxService Interface
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt methoden en eigenschappen voor het beheren en opvragen van de werkset in de ontwikkelomgeving.
public interface class IToolboxService
[System.Runtime.InteropServices.Guid("4BACD258-DE64-4048-BC4E-FEDBEF9ACB76")]
[System.Runtime.InteropServices.InterfaceType(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIUnknown)]
public interface IToolboxService
[<System.Runtime.InteropServices.Guid("4BACD258-DE64-4048-BC4E-FEDBEF9ACB76")>]
[<System.Runtime.InteropServices.InterfaceType(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIUnknown)>]
type IToolboxService = interface
Public Interface IToolboxService
- Afgeleid
- Kenmerken
Voorbeelden
In het volgende codevoorbeeld ziet u het gebruik van de IToolboxService ontwerpmodus voor het weergeven en selecteren van werksetcategorieën en items, en voor het maken van onderdelen of besturingselementen van werksetitems en het toevoegen ervan aan een Form. Als u het voorbeeld wilt gebruiken, compileert u de code naar een assembly en voegt u een verwijzing naar de assembly toe in een Windows Forms toepassing. Als u Visual Studio gebruikt, wordt de IToolboxServiceControl automatisch toegevoegd aan de Toolbox. Maak een exemplaar van het IToolboxServiceControl formulier op een formulier om het gedrag ervan te testen.
#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 );
}
};
}
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))]
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.
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);
}
}
}
Imports System.Collections
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Drawing.Design
Imports System.Data
Imports System.Diagnostics
Imports System.Reflection
Imports System.Windows.Forms
' Provides an example control that functions in design mode to
' demonstrate use of the IToolboxService to list and select toolbox
' categories and items, and to add components or controls
' to the parent form using code.
<DesignerAttribute(GetType(WindowMessageDesigner), GetType(IDesigner))> _
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Public Class IToolboxServiceControl
Inherits System.Windows.Forms.UserControl
Private WithEvents listBox1 As System.Windows.Forms.ListBox
Private listBox2 As System.Windows.Forms.ListBox
Private toolboxService As IToolboxService = Nothing
Private tools As ToolboxItemCollection
Private controlSpacingMultiplier As Integer
Public Sub New()
InitializeComponent()
AddHandler listBox2.DoubleClick, AddressOf Me.CreateComponent
controlSpacingMultiplier = 0
End Sub
' Obtain or reset IToolboxService reference on each siting of control.
Public Overrides Property Site() As System.ComponentModel.ISite
Get
Return MyBase.Site
End Get
Set(ByVal Value As System.ComponentModel.ISite)
MyBase.Site = Value
' If the component was sited, attempt to obtain
' an IToolboxService instance.
If (MyBase.Site IsNot Nothing) Then
toolboxService = CType(Me.GetService(GetType(IToolboxService)), IToolboxService)
' If an IToolboxService instance was located, update the
' category list.
If (toolboxService IsNot Nothing) Then
UpdateLists()
End If
Else
toolboxService = Nothing
End If
End Set
End Property
' Updates the list of categories and the list of items in the
' selected category.
Private Sub UpdateLists()
If (toolboxService IsNot Nothing) Then
RemoveHandler listBox1.SelectedIndexChanged, AddressOf Me.UpdateSelectedCategory
RemoveHandler listBox2.SelectedIndexChanged, AddressOf Me.UpdateSelectedItem
listBox1.Items.Clear()
Dim i As Integer
For i = 0 To toolboxService.CategoryNames.Count - 1
listBox1.Items.Add(toolboxService.CategoryNames(i))
If toolboxService.CategoryNames(i) = toolboxService.SelectedCategory Then
listBox1.SelectedIndex = i
tools = toolboxService.GetToolboxItems(toolboxService.SelectedCategory)
listBox2.Items.Clear()
Dim j As Integer
For j = 0 To tools.Count - 1
listBox2.Items.Add(tools(j).DisplayName)
Next j
End If
Next i
AddHandler Me.listBox1.SelectedIndexChanged, AddressOf Me.UpdateSelectedCategory
AddHandler Me.listBox2.SelectedIndexChanged, AddressOf Me.UpdateSelectedItem
End If
End Sub
' Sets the selected category when a category is clicked in the
' category list.
Private Sub UpdateSelectedCategory(ByVal sender As Object, ByVal e As System.EventArgs) Handles listBox1.SelectedIndexChanged
If (toolboxService IsNot Nothing) Then
toolboxService.SelectedCategory = CStr(listBox1.SelectedItem)
UpdateLists()
End If
End Sub
' Sets the selected item when an item is clicked in the item list.
Private Sub UpdateSelectedItem(ByVal sender As Object, ByVal e As System.EventArgs)
If (toolboxService IsNot Nothing) Then
If listBox1.SelectedIndex <> -1 Then
If CStr(listBox1.SelectedItem) = toolboxService.SelectedCategory Then
toolboxService.SetSelectedToolboxItem(tools(listBox2.SelectedIndex))
Else
UpdateLists()
End If
End If
End If
End Sub
' Creates a control from a double-clicked toolbox item and adds
' it to the parent form.
Private Sub CreateComponent(ByVal sender As Object, ByVal e As EventArgs)
' Obtains an IDesignerHost service from design environment.
Dim host As IDesignerHost = CType(Me.GetService(GetType(IDesignerHost)), IDesignerHost)
' Gets the project components container. (Windows Forms control
' containment depends on controls collections).
Dim container As IContainer = host.Container
' Identifies the parent Form.
Dim parentForm As System.Windows.Forms.Form = Me.FindForm()
' Retrieves the parent Form's designer host.
Dim parentHost As IDesignerHost = CType(parentForm.Site.GetService(GetType(IDesignerHost)), IDesignerHost)
' Create the components.
Dim comps As IComponent() = Nothing
Try
comps = toolboxService.GetSelectedToolboxItem().CreateComponents(parentHost)
Catch ex As Exception
' Catch and show any exceptions to prevent
' disabling the control's UI.
MessageBox.Show(ex.ToString(), "Exception message")
End Try
If comps Is Nothing Then
Return
End If
' Add any created controls to the parent form's controls
' collection. Note: components are added from the
' ToolboxItem.CreateComponents(IDesignerHost) method.
Dim i As Integer
For i = 0 To comps.Length - 1
If (parentForm IsNot Nothing) AndAlso CType(comps(i), Object).GetType().IsSubclassOf(GetType(System.Windows.Forms.Control)) Then
CType(comps(i), System.Windows.Forms.Control).Location = New Point(20 * controlSpacingMultiplier, 20 * controlSpacingMultiplier)
If controlSpacingMultiplier > 10 Then
controlSpacingMultiplier = 0
Else
controlSpacingMultiplier += 1
End If
parentForm.Controls.Add(CType(comps(i), System.Windows.Forms.Control))
End If
Next i
End Sub
' Displays labels.
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
e.Graphics.DrawString("IToolboxService Control", New Font("Arial", 14), New SolidBrush(Color.Black), 6, 4)
e.Graphics.DrawString("Category List", New Font("Arial", 8), New SolidBrush(Color.Black), 8, 26)
e.Graphics.DrawString("Items in Category", New Font("Arial", 8), New SolidBrush(Color.Black), 208, 26)
e.Graphics.DrawString("(Double-click item to add to parent form)", New Font("Arial", 7), New SolidBrush(Color.Black), 232, 12)
End Sub
Private Sub InitializeComponent()
Me.listBox1 = New System.Windows.Forms.ListBox()
Me.listBox2 = New System.Windows.Forms.ListBox()
Me.SuspendLayout()
Me.listBox1.Anchor = System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left
Me.listBox1.Location = New System.Drawing.Point(8, 41)
Me.listBox1.Name = "listBox1"
Me.listBox1.Size = New System.Drawing.Size(192, 368)
Me.listBox1.TabIndex = 0
Me.listBox2.Anchor = System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right
Me.listBox2.Location = New System.Drawing.Point(208, 41)
Me.listBox2.Name = "listBox2"
Me.listBox2.Size = New System.Drawing.Size(228, 368)
Me.listBox2.TabIndex = 3
Me.BackColor = System.Drawing.Color.Beige
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.listBox2, Me.listBox1})
Me.Location = New System.Drawing.Point(500, 400)
Me.Name = "IToolboxServiceControl"
Me.Size = New System.Drawing.Size(442, 422)
Me.ResumeLayout(False)
End Sub
End Class
' This designer passes window messages to the controls at design time.
Public Class WindowMessageDesigner
Inherits System.Windows.Forms.Design.ControlDesigner
Public Sub New()
End Sub
' Window procedure override passes events to control.
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.HWnd.Equals(Me.Control.Handle) Then
MyBase.WndProc(m)
Else
Me.DefWndProc(m)
End If
End Sub
End Class
Het volgende codevoorbeeld bevat een onderdeel dat gebruikmaakt van de functie voor het IToolboxService toevoegen van een handler voor gegevensindeling 'Tekst' of ToolboxItemCreatorCallback, 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
Opmerkingen
De IToolboxService interface biedt eigenschappen en methoden voor het toevoegen en verwijderen van werksetitems en het maken van callback-gemachtigden voor werksets, het serialiseren en deserialiseren van werksetitems en het ophalen van statusgegevens van werksets en het beheren van de werksetstatus.
U kunt informatie over de inhoud van de werkset ophalen met de volgende methoden:
De CategoryNames eigenschap geeft de categorieën aan die momenteel beschikbaar zijn in de werkset.
De SelectedCategory eigenschap geeft de geselecteerde werksetcategorie aan.
De GetToolboxItems methode haalt de items op de werkset op, optioneel gefilterd op een opgegeven werksetcategorie.
Met de GetSelectedToolboxItem methode wordt de geselecteerde ToolboxItemmethode opgehaald.
De SetSelectedToolboxItem methode selecteert de opgegeven ToolboxItem als het huidige werksetitem.
De IsSupported methode geeft aan of het opgegeven geserialiseerde object, als het een ToolboxItem, wordt ondersteund door de opgegeven ontwerpfunctiehost of dat het overeenkomt met de opgegeven kenmerken.
De IsToolboxItem methode geeft aan of het opgegeven geserialiseerde object een ToolboxItem.
U kunt werksetitems toevoegen en verwijderen met de volgende methoden:
De AddToolboxItem methode voegt een toe ToolboxItem aan de werkset en maakt de optioneel opgegeven categorie als deze niet bestaat.
De AddLinkedToolboxItem methode voegt een toe ToolboxItem die alleen is ingeschakeld voor het huidige project aan de werkset.
De RemoveToolboxItem methode verwijdert de opgegeven ToolboxItem.
Met AddCreator de methode wordt een ToolboxItemCreatorCallback gemachtigde toegevoegd die een bepaald type gegevens dat op de werkset is opgeslagen, kan converteren naar een ToolboxItem.
Met de RemoveCreator methode worden gedelegeerden ToolboxItemCreatorCallback voor het opgegeven gegevenstype verwijderd.
U kunt de werkset vernieuwen, een werksetitem markeren als gebruikt of de muiscursor instellen op een cursor die het huidige werksetitem vertegenwoordigt met behulp van de volgende methoden:
De Refresh methode vernieuwt de werksetweergave om de huidige status van de werksetitems weer te geven.
De SelectedToolboxItemUsed methode geeft de werkset aan dat het geselecteerde werksetitem is gebruikt.
Met SetCursor de methode wordt de muiscursor ingesteld op een cursor die het huidige werksetitem vertegenwoordigt.
U kunt de werkset gebruiken om een werksetitem te serialiseren of deserialiseren met behulp van de volgende methoden:
De DeserializeToolboxItem methode probeert een ToolboxItem itemobject van het opgegeven geserialiseerde werksetitem te retourneren.
De SerializeToolboxItem methode retourneert een geserialiseerd object dat de opgegeven waarde ToolboxItemvertegenwoordigt.
Eigenschappen
| Name | Description |
|---|---|
| CategoryNames |
Hiermee haalt u de namen op van alle hulpprogrammacategorieën die zich momenteel in de werkset bevinden. |
| SelectedCategory |
Hiermee haalt u de naam van de geselecteerde hulpprogrammacategorie op uit de werkset of stelt u deze in. |
Methoden
| Name | Description |
|---|---|
| AddCreator(ToolboxItemCreatorCallback, String, IDesignerHost) |
Hiermee voegt u een nieuwe maker van werksetitems toe voor een opgegeven gegevensindeling en designerhost. |
| AddCreator(ToolboxItemCreatorCallback, String) |
Hiermee voegt u een nieuwe maker van werksetitems toe voor een opgegeven gegevensindeling. |
| AddLinkedToolboxItem(ToolboxItem, IDesignerHost) |
Hiermee voegt u het opgegeven projectgerelateerde werksetitem toe aan de werkset. |
| AddLinkedToolboxItem(ToolboxItem, String, IDesignerHost) |
Hiermee voegt u het opgegeven projectgerelateerde werksetitem toe aan de werkset in de opgegeven categorie. |
| AddToolboxItem(ToolboxItem, String) |
Hiermee voegt u het opgegeven werksetitem toe aan de werkset in de opgegeven categorie. |
| AddToolboxItem(ToolboxItem) |
Hiermee voegt u het opgegeven werksetitem toe aan de werkset. |
| DeserializeToolboxItem(Object, IDesignerHost) |
Hiermee haalt u een werksetitem op van het opgegeven object dat een werksetitem in een geserialiseerd formulier vertegenwoordigt, met behulp van de opgegeven ontwerphost. |
| DeserializeToolboxItem(Object) |
Hiermee haalt u een werksetitem op van het opgegeven object dat een werksetitem in geserialiseerde vorm vertegenwoordigt. |
| GetSelectedToolboxItem() |
Hiermee haalt u het geselecteerde werksetitem op. |
| GetSelectedToolboxItem(IDesignerHost) |
Hiermee haalt u het geselecteerde werksetitem op als het beschikbaar is voor alle ontwerpers of als het ondersteuning biedt voor de opgegeven ontwerper. |
| GetToolboxItems() |
Hiermee haalt u de volledige verzameling werksetitems op uit de werkset. |
| GetToolboxItems(IDesignerHost) |
Hiermee haalt u de verzameling werksetitems op die zijn gekoppeld aan de opgegeven designerhost van de werkset. |
| GetToolboxItems(String, IDesignerHost) |
Hiermee haalt u de verzameling werksetitems op die zijn gekoppeld aan de opgegeven designerhost en -categorie uit de werkset. |
| GetToolboxItems(String) |
Hiermee haalt u een verzameling werksetitems op uit de werkset die overeenkomen met de opgegeven categorie. |
| IsSupported(Object, ICollection) |
Hiermee wordt een waarde opgehaald die aangeeft of het opgegeven object dat een geserialiseerd werksetitem vertegenwoordigt, overeenkomt met de opgegeven kenmerken. |
| IsSupported(Object, IDesignerHost) |
Hiermee wordt een waarde opgehaald die aangeeft of het opgegeven object dat een geserialiseerd werksetitem vertegenwoordigt, kan worden gebruikt door de opgegeven designerhost. |
| IsToolboxItem(Object, IDesignerHost) |
Hiermee wordt een waarde opgehaald die aangeeft of het opgegeven object een geserialiseerd werksetitem is, met behulp van de opgegeven designerhost. |
| IsToolboxItem(Object) |
Hiermee wordt een waarde opgehaald die aangeeft of het opgegeven object een geserialiseerd werksetitem is. |
| Refresh() |
Hiermee vernieuwt u de status van de werksetitems. |
| RemoveCreator(String, IDesignerHost) |
Hiermee verwijdert u een eerder toegevoegde maker van de werkset die is gekoppeld aan de opgegeven gegevensindeling en de opgegeven ontwerphost. |
| RemoveCreator(String) |
Hiermee verwijdert u een eerder toegevoegde maker van het werksetitem van de opgegeven gegevensindeling. |
| RemoveToolboxItem(ToolboxItem, String) |
Hiermee verwijdert u het opgegeven werksetitem uit de werkset. |
| RemoveToolboxItem(ToolboxItem) |
Hiermee verwijdert u het opgegeven werksetitem uit de werkset. |
| SelectedToolboxItemUsed() |
Hiermee wordt de werksetservice aangegeven dat het geselecteerde hulpprogramma is gebruikt. |
| SerializeToolboxItem(ToolboxItem) |
Hiermee haalt u een serialiseerbare object op dat het opgegeven werksetitem vertegenwoordigt. |
| SetCursor() |
Hiermee stelt u de cursor van de huidige toepassing in op een cursor die het geselecteerde hulpprogramma vertegenwoordigt. |
| SetSelectedToolboxItem(ToolboxItem) |
Hiermee selecteert u het opgegeven werksetitem. |