Is it possible to add a TrackBar开发者_开发知识库 control to a ContextMenu? So when I right click, my ContextMenu will drop down and a TrackBar will appear as a menu item?
If your context menu is a ContexMenuStrip
, you can create an item in this way:
[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.MenuStrip |
ToolStripItemDesignerAvailability.ContextMenuStrip)]
public class TrackBarMenuItem : ToolStripControlHost
{
private TrackBar trackBar;
public TrackBarMenuItem():base(new TrackBar())
{
this.trackBar = this.Control as TrackBar;
}
// Add properties, events etc. you want to expose...
}
Thanks to the ToolStripItemDesignerAvailability
attribute, you can even see the item in the Forms Designer, as shown in the image below:
P.S.
This solution comes from this MSDN example
Yes, you need to set the context menu to user draw and draw the menu items yourself. You will have to create a custom MenuItem the implementes a TrackBar
For what it's worth for anyone who stumbles across this having problems with:
Constructor on type 'System.Windows.Forms.ToolStripControlHost' not found.
The only way I got it to work was by putting the derived control in it's own file. When it is in the same file as another control it confuses the designer.
精彩评论