PopUpMenu
In meinem Beitrag zum Erstellen eines Ribbons in EPLAN, gab es mehrfach den Wunsch eigene Untermenüs zu definieren.
Das ist leider so nicht direkt möglich.
Ich habe ein Script gebaut, dass man per Befehl im Menüband aufrufen kann.
Befehlszeile:
PopUpMenu /Items:"Item 1;TestAction;Tooltip 1|Item 2;TestAction;Tooltip 2|Item 3;TestAction;Tooltip 3"
Es werden alle Menü-Einträge übergeben, mit Text;Action;Tooltip
. In meinem Beispiel drei.
using System.Windows.Forms; using Eplan.EplApi.ApplicationFramework; using Eplan.EplApi.Base; using Eplan.EplApi.Scripting; internal class PopUpMenu { [DeclareAction("PopUpMenu")] public bool ActionPopUpMenu(ActionCallingContext acc) { // Get items string itemsString = null; acc.GetParameter("Items", ref itemsString); if (string.IsNullOrEmpty(itemsString)) { return false; } ContextMenuStrip menu = new ContextMenuStrip(); var itemsSplit = itemsString.Split('|'); foreach (var itemSplit in itemsSplit) { var split = itemSplit.Split(';'); if (split.Length < 2) { new Decider().Decide(EnumDecisionType.eOkDecision, "Wrong parameter value.", "PopUpMenu", EnumDecisionReturn.eOK, EnumDecisionReturn.eOK, "PopUpMenu", false, EnumDecisionIcon.eFATALERROR); return false; } // Create item ToolStripMenuItem menuItem = new ToolStripMenuItem(); string text = split[0]; menuItem.Text = text; // Action string action = split[1]; menuItem.Click += (sender, args) => { new CommandLineInterpreter().Execute(action); }; // Tooltip if (split.Length > 2) { string tooltipText = split[2]; menuItem.ToolTipText = tooltipText; } menu.Items.Add(menuItem); } menu.Show(Cursor.Position); return true; } [DeclareAction("TestAction")] public void ActionTest() { MessageBox.Show("Hello!"); } }