【问题标题】:Drop Down menu properties下拉菜单属性
【发布时间】:2009-07-31 08:52:42
【问题描述】:

有谁知道我是否以及如何在 Visual Studio 2008 中的一个简单下拉菜单中更改图像条的颜色?目前有一个下拉菜单,我有自己的项目集合,下拉菜单上的每个项目旁边都有一个图像条,它目前是灰色的,带有从浅到深的渐变。我很想知道这种颜色是否可以更改或可能完全删除? 在此先感谢大家,克雷格。

【问题讨论】:

  • 请详细说明,什么是图像条?我猜它不是标准的 .NET 控件?
  • 图像条是显示在下拉菜单中项目文本旁边的彩色区域,它是留出的区域,允许将图像放置在下拉菜单中的各种项目旁边向下菜单,例如编辑菜单下用于剪切的剪刀图标包含在图像条中
  • 在 microsoft word 中有一个这样的例子。单击编辑菜单,您将在菜单列表的左侧看到一个条带,该条为图像或键盘快捷键预留。

标签: visual-studio-2008 menu drop-down-menu appearance


【解决方案1】:

您可以通过创建 ToolStripRenderer 的子类并覆盖适当的渲染方法来实现此行为。有关示例,请参阅 MSDN。

我假设您正在寻找 WinForms 解决方案。对于 WPF/Xaml 的解决方案当然完全不同,可以通过更改控件模板来完成。

【讨论】:

    【解决方案2】:

    我假设你问的是 winforms,因为我不知道 WPF。

    如果您只想隐藏图像条,可以将ShowImageMarginShowCheckMargin 属性设置为false。但是,您将无法显示菜单项的图像。

    至少在 XP 上,将下拉菜单的 RenderMode 属性设置为 ToolStripRenderMode.System 将为您提供一个没有任何图像边距装饰的菜单;尽管它可能与您的应用程序的视觉风格不匹配。

    如果您为每个菜单项设置BackColor,图像边距将被遮挡。

    要隐藏图像边距而不改变下拉菜单的视觉样式,您需要创建一个带有空 OnRenderImageMargin 函数的渲染器,如下所示:

    class MyRenderer : ToolStripProfessionalRenderer
    {
        protected virtual void OnRenderImageMargin(ToolStripRenderEventArgs e)
        {
            // do nothing
        }
    }
    

    然后将下拉列表的Renderer 属性设置为新渲染器类的实例。您可以通过修改渲染器的ColorTable,以类似的方式更改图像边距的颜色。

    但是,在你做任何这些之前,问问自己:

    • 将界面更改为不太熟悉的界面是否有可用性优势?
    • 如果有,这种好处是否大于保持代码简单以便您可以快速响应用户反馈的好处?

    第一个问题的答案通常是“否”。

    【讨论】:

    • 谢谢 simon,我试试看,看看我能做什么!!
    猜你喜欢
    • 1970-01-01
    • 2018-03-22
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    相关资源
    最近更新 更多