[英]Windows 11 Context Menu Style
為 Windows 提供的默認 styles Forms 上下文菜單控件(使用ContextMenuStrip
)看起來像是為 Office XP 創建的東西 - 它的樣式與 Windows 11 的樣式不太匹配。
相比之下,現代 Windows 11 上下文菜單具有圓角並且是主題感知的:
即使對於某些遺留應用程序不支持主題的情況,它仍然使用圓角。
如何從 Windows Forms(或控制台)應用程序復制 Windows 11 托盤圖標的主題感知樣式和現代(圓角)上下文菜單?
理想情況下,我盡量不要從頭開始編寫整個托盤菜單渲染器,而只是重新使用內置的操作系統組件,但到目前為止,在弄清楚我需要使用什么工具來實現甚至得到菜單。
使用這個 class
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,
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.