using System;
using Autodesk.AutoCAD.Windows;
using CadApp = Autodesk.AutoCAD.ApplicationServices.Application;
namespace ACAD2017_TestAppMenu
{
public class AppContextMenuItem : Autodesk.AutoCAD.Windows.MenuItem
{
public AppContextMenuItem(string title, string cmdName) : base(title)
{
CommandName = cmdName;
}
public string CommandName{ get; private set; }
}
public class AppContextMenu
{
static ContextMenuExtension _appMenu = null;
public static void AddContextMenu()
{
_appMenu
= new ContextMenuExtension
(); _appMenu.Title = "TEST AppContextMenu";
_appMenu
.MenuItems.Add(new AppContextMenuItem
("First Test...",
"kb_TEST")); _appMenu
.MenuItems.Add(new MenuItem
("")); // separator _appMenu
.MenuItems.Add(new AppContextMenuItem
("Second Test...",
"kb_TEST02"));
_appMenu
.MenuItems.Add(new MenuItem
("")); // separator foreach (MenuItem mnuItem in _appMenu.MenuItems) {
var appContextMnuItem = mnuItem as AppContextMenuItem;
if (appContextMnuItem != null)
appContextMnuItem
.Click += new EventHandler
(ExecuteCommand
); }
CadApp.AddDefaultContextMenuExtension(_appMenu);
}
private static void ExecuteCommand(Object o, EventArgs e)
{
var mnuItem = (AppContextMenuItem)o;
string fullCmdLine = string.Format($"_{mnuItem.CommandName}\n");
CadApp.DocumentManager.MdiActiveDocument.SendStringToExecute(fullCmdLine, false, false, true);
}
public static void RemoveContextMenu()
{
CadApp.RemoveDefaultContextMenuExtension(_appMenu);
}
}
}