Q: ContextMenuStrip和MenuStrip共用ToolStripMenuItem,应该怎么实现。。以前可以使用CloneMenu。现在有什么好的方法?
A: 因为每个Item都有一个Owner属性,也就是菜单项不能属于多个菜单
所以,解决的办法
1.深拷贝,创建新的Item
2.在MenuStrip下拉的时候从ContextMenuStrip复制元素,反之在ContextMenuStrip显示的时候从MenuStrip复制元素
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
private void FileToolStripMenuItem_DropDownOpening(object sender, EventArgs e)
{
for (int i = contextMenuStrip1.Items.Count - 1; i >= 0; i--)
{
FileToolStripMenuItem.DropDownItems.Add(contextMenuStrip1.Items[i]);
}
}
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
for (int i = FileToolStripMenuItem.DropDownItems.Count - 1; i >= 0; i--)
{
contextMenuStrip1.Items.Add(FileToolStripMenuItem.DropDownItems[i]);
}
}