首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows 11上下文菜单样式

Windows 11上下文菜单样式
EN

Stack Overflow用户
提问于 2022-03-09 02:36:09
回答 1查看 1.9K关注 0票数 4

Windows菜单控件(使用ContextMenuStrip)提供的默认样式看起来像是为Office创建的样式--它的样式与Windows 11的样式不太匹配。

相比之下,现代的Windows 11上下文菜单有圆角,并且是主题感知的:

即使对于一些遗留应用程序来说,它不知道主题,它仍然在使用圆角。

如何复制Windows窗体(或控制台)应用程序中Windows 11托盘图标的主题感知样式和现代(圆角)上下文菜单?

理想情况下,我不想从头开始写一个完整的托盘菜单呈现器,而只是重复使用内置的OS组件,但到目前为止,我遇到了一个难题,我需要使用什么工具来获得菜单。

EN

回答 1

Stack Overflow用户

发布于 2022-11-25 16:27:01

使用这个类

代码语言:javascript
复制
class CustomContextMenu : ContextMenuStrip
{
    [DllImport("dwmapi.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    private static extern long DwmSetWindowAttribute(IntPtr hwnd,
                                                        DWMWINDOWATTRIBUTE attribute,
                                                        ref DWM_WINDOW_CORNER_PREFERENCE pvAttribute,
                                                        uint cbAttribute);
    
    public CustomContextMenu()
    {
        var preference = DWM_WINDOW_CORNER_PREFERENCE.DWMWCP_ROUND;     //change as you want
        DwmSetWindowAttribute(Handle,
                              DWMWINDOWATTRIBUTE.DWMWA_WINDOW_CORNER_PREFERENCE,
                              ref preference,
                              sizeof(uint));
    }

    public enum DWMWINDOWATTRIBUTE
    {
        DWMWA_WINDOW_CORNER_PREFERENCE = 33
    }
    public enum DWM_WINDOW_CORNER_PREFERENCE
    {
        DWMWA_DEFAULT = 0,
        DWMWCP_DONOTROUND = 1,
        DWMWCP_ROUND = 2,
        DWMWCP_ROUNDSMALL = 3,
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71403685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档