本文整理汇总了C#中System.Drawing.Design.IToolboxService接口的典型用法代码示例。如果您正苦于以下问题:C# IToolboxService接口的具体用法?C# IToolboxService怎么用?C# IToolboxService使用的例子?那么恭喜您, 这里精选的接口代码示例或许可以为您提供帮助。
IToolboxService接口属于System.Drawing.Design命名空间,在下文中一共展示了IToolboxService接口的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: typeof
//引入命名空间
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);
}
}
}
示例2: TextDataTextBoxComponent
//引入命名空间
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.
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
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.
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
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.
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
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;
}
}
}