【发布时间】:2010-12-02 19:46:32
【问题描述】:
是否可以将 TrackBar 控件添加到 ContextMenu?那么当我右键单击时,我的 ContextMenu 会下拉,并且 TrackBar 会作为菜单项出现?
【问题讨论】:
标签: c# winforms contextmenu trackbar
是否可以将 TrackBar 控件添加到 ContextMenu?那么当我右键单击时,我的 ContextMenu 会下拉,并且 TrackBar 会作为菜单项出现?
【问题讨论】:
标签: c# winforms contextmenu trackbar
如果你的上下文菜单是ContexMenuStrip,你可以这样创建一个项目:
[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...
}
感谢ToolStripItemDesignerAvailability 属性,您甚至可以在表单设计器中看到该项目,如下图所示:
附言
这个解决方案来自这个MSDN example
【讨论】:
是的,您需要将上下文菜单设置为用户绘制并自己绘制菜单项。您将必须创建一个自定义 MenuItem 来实现一个 TrackBar
【讨论】:
对于任何偶然发现此问题的人来说,这是值得的:
找不到类型“System.Windows.Forms.ToolStripControlHost”的构造函数。
我让它工作的唯一方法是将派生控件放在它自己的文件中。当它与另一个控件在同一个文件中时,它会使设计者感到困惑。
【讨论】: