Microsoft Communities

Welcome to WindowsClient.net | Sign in | Join

Here are some frequently asked questions about Windows Forms and their answers.

Windows Forms FAQs

How can I customize the ToolStripItems at design-time?

The two avenues of customization covered here are custom ToolStripItems at design time and custom renderer custom ToolStrips at design time.

Custom ToolStripItems

Custom ToolStripItems can be created by extending existing ToolStripItems like ToolStripButton or ToolStripMenuItem – this is very similar to extending any control. To get these showing at design time and add them to ToolStrips, use the following sample for guidance.

Sample: ToolStripItemDesignerAvailability

This sample shows how to get custom items in the dropdowns used at design time for strip controls. It requires same named bitmaps to be added to the project as embedded resources.

// this extends ToolStripButton
// note: visibility from base class preserved
public class myFirstToolStripButton : ToolStripButton { }

// this adds visibility into MenuStrip
// ToolStrip, ContextMenuStrip, StatusStrip also supported [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.MenuStrip | ToolStripItemDesignerAvailability.ToolStrip)]
public class myOtherToolStripButton : ToolStripButton { }

// this adds a custom bitmap
[ToolboxBitmap(typeof(myNextToolStripButton), "myNextToolStripButton.bmp")]
public class myNextToolStripButton : ToolStripButton { }

// this adds custom toolbox item attributes
[ToolboxItem(typeof(CustomControlToolboxItem))]
public class myLastToolStripButton : ToolStripButton { }

public class CustomControlToolboxItem : ToolboxItem
{
public CustomControlToolboxItem() { }

public override void Initialize(Type type)
{
base.Initialize(type);
this.DisplayName = "My Last ToolStrip Button";
this.Bitmap = new Bitmap(typeof(CustomControlToolboxItem), "myLastToolStripButton.bmp");
}}
Custom ToolStrips

Custom ToolStrips are automatically added to the toolbox as are other controls with Whidbey's new auto toolbox population. What might not be apparent is using a custom ToolStrip as a vehicle to show off your custom Renderer and/or colors at designtime. This is simply a design pattern that's been useful.

Sample: CustomToolStrip @ DesignTime
public class myToolStrip : ToolStrip
{
public myToolStrip()
{
  Renderer = new myToolStripRenderer();
}
}
public class myToolStripRenderer : ToolStripProfessionalRenderer
{
public myToolStripRenderer()
: base(new myProfessionalColors())
{
}
}
public class myProfessionalColors : ProfessionalColorTable
{
public override Color ToolStripGradientBegin
{
  get { return Color.HotPink; }
}

public override Color ToolStripGradientEnd
{
  get { return Color.Salmon; }
}

public override Color ToolStripGradientMiddle
{
  get { return Color.Orange; }
}
}


Page view counter