.ContextMenu 和 .ContextMenuStrip 之间的区别

Posted

技术标签:

【中文标题】.ContextMenu 和 .ContextMenuStrip 之间的区别【英文标题】:Differences between .ContextMenu and .ContextMenuStrip 【发布时间】:2012-01-16 13:21:37 【问题描述】:

Windows 窗体中的.ContextMenu.ContextMenuStrip 有什么区别?

我已经知道ContextMenu 是什么,但ContextMenuStripContextMenu 有何不同?

【问题讨论】:

是的,我先检查了 MSDN,但没有有用的信息。 哎呀为什么投反对票?仅供参考,几乎所有有关 C# 的 *** 问题都可以通过 MSDN、Google、Bing 和 Internet 来回答。这里值得一问,因为开发者可能想先在 *** 中找到答案! 我对每个答案(但不是问题)都投了反对票,因为“ContextMenusStrip 取代了 ContextMenu”是一个大打哈欠。当然可以。问的问题是有什么区别? @RobertHarvey:说得好。我将继续等待更好的答案。我期待类似“如果你想这样做,请使用 ContextMenu;如果你想这样做,请使用 ContextMenuStrip……” 【参考方案1】:

http://www.informit.com/articles/article.aspx?p=606224&seqNum=2

您可能想知道为什么微软已经取代了一个有价值和受欢迎的 用新人控制。 ContextMenuStrip 控件很好 想法并使其变得更好。它就像ContextMenu 控件一样工作。 您仍然通过以下方式将ContextMenuStrip 控件附加到另一个用户控件 更改该控件的 ContextMenuStrip 属性。然而,微软 大大改进了您可以添加到 ContextMenuStrip继续...

查看 MSDN 上的示例:

http://msdn.microsoft.com/en-us/library/system.windows.forms.contextmenustrip.aspx

ContextMenuStrip 替换 ContextMenu。您可以关联一个 ContextMenuStrip 使用任何控件,然后单击鼠标右键 自动显示快捷菜单。你可以显示一个 ContextMenuStrip 使用 Show 方法以编程方式。 ContextMenuStrip 支持可取消的打开和关闭事件 处理动态人口和多次点击场景。 ContextMenuStrip 支持图像、菜单项检查状态、文本、访问 键、快捷键和级联菜单。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.contextmenustrip.aspx

如果ContextMenu 也已分配给控件,则 ContextMenu 优先于 ContextMenuStrip

【讨论】:

我认为这里的最后一点回答了这个问题。所以基本上,完全远离 ContextMenu 并改用 ContextMenuStrip。【参考方案2】:

来自doc

ContextMenuStrip 替换 ContextMenu。

【讨论】:

感谢您指出这一点。 MSDN就是这样一个大海捞针,一个控件可以有很多页,这个回答了问题。【参考方案3】:

根据MSDN,ContextMenuStrip 替换了 ContextMenu 类:

虽然 ContextMenuStrip 替换并添加了功能 以前版本的ContextMenu控件,保留了ContextMenu 向后兼容性和未来使用(如果您选择)。

来源:MSDN - ContextMenu

编辑:为什么是 -1?

【讨论】:

那是糟糕的运动,投反对票而不发表评论。一个人将如何从中学习..? -1 是因为您没有以非平凡的方式回答问题。 OP 在问 有什么区别, 我没有看到您的回答有任何价值,重申了这一点。 我不同意你的观点。在撰写本文时,还没有答案。问题是“ContextMenuStrip 与 ContextMenu 有何不同”,我引用了 MSDN 的答案。反正;我想知道在投反对票后我做错了什么。 这就是为什么我从不评论我的反对票。我总是陷入争论。 编辑您的问题只是为了添加“为什么是 -1?”似乎......没有帮助。【参考方案4】:

contextMenu - msdn 和 contextMenuStrip - msdn

contextMenu - 表示快捷菜单。尽管 ContextMenuStrip 替换了先前版本的 ContextMenu 控件并为其添加了功能,但仍保留 ContextMenu 以供向后兼容和将来使用(如果您选择)。

ContextMenuStrip 替换了以前版本的 ContextMenu 控件并为其添加了功能

【讨论】:

【参考方案5】:

如果您将鼠标悬停在 ContextMenu 上,您会注意到 ContextMenuStrip 替换了它,但 ContextMenu 出于兼容性目的而保留。

【讨论】:

以上是关于.ContextMenu 和 .ContextMenuStrip 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

.ContextMenu 和 .ContextMenuStrip 之间的区别

ContextMenu使用实例

menuitem和contextmenu crossbrowser兼容性

Android contextmenu 设置布局和大小

WPF如何去掉ContextMenu的显示和隐藏动画

列表框 contextMenu 子项单击