在Winforms中带有标签的C#下拉菜单

时间:2012-11-01 10:45:32

标签: c# winforms

我希望在C#中的Winforms中有一个下拉菜单,菜单项之间有文本标签。它将与分离器非常相似。所以基本上我正在寻找一个分组菜单项的选项。

知道我们如何实现它吗?随附的是我希望拥有的下拉菜单。 enter image description here

3 个答案:

答案 0 :(得分:2)

希望您使用的是VS2010

在“菜单设计器”中,右键单击要放置分隔栏的位置,然后选择“转换为 - ”;分离器。

enter image description here


MSDN Article on menu enhancements


你可能也想看看这个(关于表格分隔符,但版本是VS2003!) - Windows Forms Separator Control

答案 1 :(得分:0)

可以在链接下方帮助您:

A Seperator Combo List Vox

答案 2 :(得分:0)

我确信有很多复杂的方法可以做到这一点,但我已经找到了一个可以满足您需求的方法:

1.您自己制作ToolStripItem:

[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.All)]
public sealed class CustomToolStripMenuItem : ToolStripMenuItem
{

    public CustomToolStripMenuItem()
    {
        DisplayStyle = ToolStripItemDisplayStyle.Text;
        BackColor = Color.LightSteelBlue;
        ForeColor = Color.MidnightBlue;
        Font = new Font(Font, FontStyle.Bold);
       // Or other options to your liking
     }
}

2.你制作自己的渲染器:

public class CustomeRenderer : ToolStripProfessionalRenderer
{

    protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
    {
        if(e.Item is CustomToolStripMenuItem)
        {
            e.Graphics.FillRectangle(Brushes.LightSteelBlue, e.Item.ContentRectangle);
        }
        else
        {
            base.OnRenderMenuItemBackground(e);
        }
    }
}

3.使用您的物品: 对于您的上下文菜单,您需要设置渲染器:

 RenderMode = ToolStripRenderMode.Professional;
 Renderer = new CustomeRenderer();

在上下文菜单中,您现在可以使用CustomToolStripMenuItem