| File: System\Windows\Forms\Design\Behavior\BehaviorService.MenuCommandHandler.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms.Design\src\System.Windows.Forms.Design.csproj (System.Windows.Forms.Design) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.ComponentModel.Design; namespace System.Windows.Forms.Design.Behavior; public sealed partial class BehaviorService { private class MenuCommandHandler : IMenuCommandService { private readonly BehaviorService _owner; private readonly Stack<CommandID> _currentCommands = new(); public MenuCommandHandler(BehaviorService owner, IMenuCommandService menuService) { _owner = owner; MenuService = menuService; } public IMenuCommandService MenuService { get; } void IMenuCommandService.AddCommand(MenuCommand command) => MenuService.AddCommand(command); void IMenuCommandService.RemoveVerb(DesignerVerb verb) => MenuService.RemoveVerb(verb); void IMenuCommandService.RemoveCommand(MenuCommand command) => MenuService.RemoveCommand(command); MenuCommand? IMenuCommandService.FindCommand(CommandID commandID) { try { if (_currentCommands.Contains(commandID)) { return null; } _currentCommands.Push(commandID); return _owner.FindCommand(commandID, MenuService); } finally { _currentCommands.Pop(); } } bool IMenuCommandService.GlobalInvoke(CommandID commandID) => MenuService.GlobalInvoke(commandID); void IMenuCommandService.ShowContextMenu(CommandID menuID, int x, int y) => MenuService.ShowContextMenu(menuID, x, y); void IMenuCommandService.AddVerb(DesignerVerb verb) => MenuService.AddVerb(verb); DesignerVerbCollection IMenuCommandService.Verbs => MenuService.Verbs; } }