private static void ProvideItemsCallback(object sender, EventArgs e) { var commandEvent = sender as MenuCommand; var commandEventArgs = e as OleMenuCmdEventArgs; if ((commandEvent != null) && (null != commandEventArgs)) { if (commandEventArgs.Options == OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT) { int commandId = commandEvent.CommandID.ID; IComboBoxCommandHandler handler = GetHandlerFor(commandId); IEnumerable <string> items = handler.GetAvailableItems(commandId); Marshal.GetNativeVariantForObject(items, commandEventArgs.OutValue); } } }
private static void ItemSelectionCallback(object sender, EventArgs e) { var commandEvent = sender as MenuCommand; var commandEventArgs = e as OleMenuCmdEventArgs; if ((commandEvent != null) && (null != commandEventArgs)) { int commandId = commandEvent.CommandID.ID; IComboBoxCommandHandler handler = GetHandlerFor(commandId); if (commandEventArgs.OutValue != IntPtr.Zero) { string items = handler.GetSelectedItem(commandId); Marshal.GetNativeVariantForObject(items, commandEventArgs.OutValue); } else if (commandEventArgs.InValue != null) { var selectedItem = commandEventArgs.InValue as string; handler.Selected(selectedItem, commandId); } } }