示例#1
0
        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);
                }
            }
        }
示例#2
0
        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);
                }
            }
        }