ContextMenuStrip в PropertyGrid

Элемент управления верхнего уровня не может быть добавлен в элемент управления Скажите, пожалуйста, как показать ContextMenuStrip в PropertyGrid? Для этого я использую этот код:

public class SaveFileNameEditor : UITypeEditor
    {
        public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
        {
            return UITypeEditorEditStyle.DropDown;
        }

        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            IWindowsFormsEditorService FileEditor =
            provider.GetService(typeof(IWindowsFormsEditorService)) as
             IWindowsFormsEditorService;
            ContextMenuStrip MenuList = null;
            ToolStripMenuItem MenuItem = null;
            if (FileEditor != null)
            {
                MenuList = new ContextMenuStrip ();
                MenuItem = new ToolStripMenuItem("Add File...");
                MenuList.Items.Add(MenuItem);
                MenuItem = new ToolStripMenuItem("Save File ...");
                MenuList.Items.Add(MenuItem);
                MenuItem = new ToolStripMenuItem("Delete File ...");
                MenuList.Items.Add(MenuItem);

                FileEditor.DropDownControl(MenuList);
                MenuList.Show();
            }
            return value;
        }    
    }

Но я получаю сообщение об ошибке «Элемент управления верхнего уровня не может быть добавлен к элементу управления» в сети.

FileEditor.DropDownControl(MenuList);

person Serg Okunev    schedule 02.10.2013    source источник
comment
Невозможно воспроизвести, и в это трудно поверить, поскольку ни FileEditor, ни MenuList не имеют значения NULL. Пожалуйста, покажите реальный код и полный кадр стека.   -  person Simon Mourier    schedule 02.10.2013
comment
Извините, метод GetEditStype лучше написать так:   -  person Serg Okunev    schedule 02.10.2013
comment
общедоступное переопределение UITypeEditorEditStyle GetEditStyle (контекст ITypeDescriptorContext) {вернуть UITypeEditorEditStyle.DropDown; }   -  person Serg Okunev    schedule 02.10.2013
comment
Нет такой же ошибки, в нем говорится, что элемент управления верхнего уровня не может быть добавлен к элементу управления. что и ожидается. PS: обновите свой вопрос.   -  person Simon Mourier    schedule 02.10.2013


Ответы (1)


Я нашел решение. Вместо того

FileEditor.DropDownControl(MenuList);

положил

Point MenuCoords = (System.Windows.Forms.Control.MousePosition);
MenuList.Show(MenuCoords);
person Serg Okunev    schedule 03.10.2013