Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 744
Menu
Create application menus, context menus, and menu items with full keyboard shortcut support.
The Electron.Menu API provides comprehensive control over application menus and context menus. It supports native platform menus with custom menu items, submenus, keyboard shortcuts, and role-based menu items.
Gets a read-only dictionary of all current context menu items, keyed by browser window ID.
Gets a read-only collection of all current application menu items.
Shows the context menu for the specified browser window.
Parameters:
browserWindow- The browser window to show the context menu for
Sets the application menu for the entire application.
Parameters:
menuItems- Array of MenuItem objects defining the application menu
Sets a context menu for a specific browser window.
Parameters:
browserWindow- The browser window to attach the context menu tomenuItems- Array of MenuItem objects defining the context menu
// Create application menuvarmenuItems=new[]{newMenuItem{Label="File",Submenu=new[]{newMenuItem{Label="New",Click=()=>CreateNewDocument()},newMenuItem{Label="Open",Click=()=>OpenDocument()},newMenuItem{Type=MenuType.Separator},newMenuItem{Label="Exit",Click=()=>Electron.App.Quit()}}},newMenuItem{Label="Edit",Submenu=new[]{newMenuItem{Role=MenuRole.Undo},newMenuItem{Role=MenuRole.Redo},newMenuItem{Type=MenuType.Separator},newMenuItem{Role=MenuRole.Cut},newMenuItem{Role=MenuRole.Copy},newMenuItem{Role=MenuRole.Paste}}},newMenuItem{Label="View",Submenu=new[]{newMenuItem{Role=MenuRole.Reload},newMenuItem{Role=MenuRole.ForceReload},newMenuItem{Role=MenuRole.ToggleDevTools},newMenuItem{Type=MenuType.Separator},newMenuItem{Role=MenuRole.ResetZoom},newMenuItem{Role=MenuRole.ZoomIn},newMenuItem{Role=MenuRole.ZoomOut}}},newMenuItem{Label="Window",Submenu=new[]{newMenuItem{Role=MenuRole.Minimize},newMenuItem{Role=MenuRole.Close}}}};// Set application menuElectron.Menu.SetApplicationMenu(menuItems);// Create context menu for specific windowvarcontextMenuItems=new[]{newMenuItem{Label="Copy",Click=()=>CopySelectedText()},newMenuItem{Label="Paste",Click=()=>PasteText()},newMenuItem{Type=MenuType.Separator},newMenuItem{Label="Inspect Element",Click=()=>InspectElement()}};// Set context menu for windowElectron.Menu.SetContextMenu(mainWindow,contextMenuItems);// Show context menu programmaticallyElectron.Menu.ContextMenuPopup(mainWindow);// Create menu with keyboard shortcutsvarmenuItems=new[]{newMenuItem{Label="File",Submenu=new[]{newMenuItem{Label="New",Accelerator="CmdOrCtrl+N",Click=()=>CreateNewDocument()},newMenuItem{Label="Open",Accelerator="CmdOrCtrl+O",Click=()=>OpenDocument()},newMenuItem{Label="Save",Accelerator="CmdOrCtrl+S",Click=()=>SaveDocument()}}}};Electron.Menu.SetApplicationMenu(menuItems);// Update menu items dynamicallyvarfileMenu=Electron.Menu.MenuItems.FirstOrDefault(m =>m.Label=="File");if(fileMenu?.Submenu!=null){varsaveItem=fileMenu.Submenu.FirstOrDefault(m =>m.Label=="Save");if(saveItem!=null){saveItem.Enabled=HasUnsavedChanges;}}// macOS specific menu itemsif(RuntimeInformation.IsOSPlatform(OSPlatform.OSX)){varmacMenuItems=new[]{newMenuItem{Label="MyApp",Submenu=new[]{newMenuItem{Role=MenuRole.About},newMenuItem{Type=MenuType.Separator},newMenuItem{Role=MenuRole.Services},newMenuItem{Type=MenuType.Separator},newMenuItem{Role=MenuRole.Hide},newMenuItem{Role=MenuRole.HideOthers},newMenuItem{Role=MenuRole.Unhide},newMenuItem{Type=MenuType.Separator},newMenuItem{Role=MenuRole.Quit}}}};// Insert before File menuvarallMenus=newList<MenuItem>(macMenuItems);allMenus.AddRange(menuItems);Electron.Menu.SetApplicationMenu(allMenus.ToArray());}- Electron.WindowManager - Windows for context menus
- Electron.App - Application lifecycle events
- Electron.GlobalShortcut - Global keyboard shortcuts
- Electron Menu Documentation - Official Electron menu API
Want to contribute to this documentation? Please fork and create a PR! The Wiki is autogenerated from the /docs content in the repository.