For instance, if you want to share items between a ContextMenu and the main Form MenuStrip

MenuStrip without items

ContextMenu items

ContextMenu with copied items from ContextMenu
On main Form you can do:
ToolStripMenuItem toolStripMoved;
ToolStripItem[] itemsArrayMoved;
private void Edit_DropDownOpening(object sender, EventArgs e)
{
var doc = DockPanel.GetDocuments().FirstOrDefault(t => t.Visible) as DockDocument;
if (doc != null)
{
toolStripMoved = doc.ContextMenuStrip.Items["Edit"] as ToolStripMenuItem;
if (toolStripMoved != null)
{
var menu = (sender as ToolStripMenuItem);
itemsArrayMoved = Helper.GetAllChildren(toolStripMoved);
foreach (ToolStripItem item in itemsArrayMoved)
{
if (item.Name.Equals("Edit") == false)
menu.DropDownItems.Add(item);
}
}
}
}
private void Edit_DropDownClosed(object sender, EventArgs e)
{
if (toolStripMoved != null)
{
foreach (ToolStripItem item in itemsArrayMoved)
{
if (item.Name.Equals("Edit") == false)
toolStripMoved.DropDownItems.Add(item);
}
}
}
static private ToolStripItem[] GetAllChildren(ToolStripItem item)
{
List<ToolStripItem> Items = new List<ToolStripItem>() { item };
if (item is ToolStripMenuItem)
foreach (ToolStripItem i in ((ToolStripMenuItem)item).DropDownItems)
Items.AddRange(GetAllChildren(i));
else if (item is ToolStripSplitButton)
foreach (ToolStripItem i in ((ToolStripSplitButton)item).DropDownItems)
Items.AddRange(GetAllChildren(i));
else if (item is ToolStripDropDownButton)
foreach (ToolStripItem i in ((ToolStripDropDownButton)item).DropDownItems)
Items.AddRange(GetAllChildren(i));
return Items.ToArray();
}