ContextMenuStrip子菜单位置(C#,Win Forms)

时间:2017-02-24 11:50:48

标签: c# winforms contextmenustrip

我有一个两级ContextMenuStrip,由NofiyIcon右键单击打开。我在代码中创建了这个菜单。

menuitem1 --- submenu1
          --- submenu2
          --- submenu3
menuitem2 --- submenu1
          --- submenu2
          --- submenu3
........

一切都很好,但子菜单在错误的位置打开(在主菜单的顶部)。我想在主菜单项位置打开。

像这样:

enter image description here

那么如何控制子菜单位置?相关代码:

tray_menu_item = new ToolStripMenuItem(); 
tray_menu_item.Text = kvp.Value.ToString(); 
while (reader.Read()) { 
   tray_menu_subitem = new ToolStripMenuItem(); 
   tray_menu_subitem.Text = reader["task"].ToString(); 
   ((ToolStripDropDownMenu)tray_menu_subitem.DropDown).ShowImag‌​eMargin = false; 
   tray_menu_item.DropDownItems.Add(tray_menu_subitem);
} 

tray_menu.Items.Add(tray_menu_item);

1 个答案:

答案 0 :(得分:0)

您应该使用此Show(Point)方法:

cmsInventory.Show(cmsInventory.PointToScreen(p));

或者你可以使用Show(Control, Point)重载来定位相对于指定控制位置的contextmenustrip。