2013-10-02 55 views
0

顶级控件无法添加到控件请告诉我,如何在PropertyGrid中显示ContextMenuStrip?为此,我用这个代码:PropertyGrid中的ContextMenuStrip

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); 
+0

无法重现,再加上它似乎很难相信,因为无论FileEditor或菜单列表为空。请显示一些真实的代码和完整的堆栈框架。 –

+0

对不起,GetEditStype的方法最好是这样写的: –

+0

public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) { return UITypeEditorEditStyle.DropDown; } –

回答

0

我已经找到了解决办法。取而代之的

FileEditor.DropDownControl(MenuList); 

Point MenuCoords = (System.Windows.Forms.Control.MousePosition); 
MenuList.Show(MenuCoords);