我有一个 .NET 2.0 Windows 窗体应用程序。在这个应用程序中有一个带有菜单栏和状态栏的表单控件。此表单上还有一个 ListView。
如果我向此表单添加上下文菜单,则当用户右键单击表单的任何部分(包括菜单栏和状态栏)时,上下文菜单将打开。
当单击菜单栏/状态栏时,如何防止上下文菜单打开?我希望它仅在单击表单的“灰色区域”时打开。
如果点击发生在该表单的某个控件之上(例如,在 ListView 上),我该如何识别?我想知道用户是否在灰色区域上方或 ListView 上方右键单击,因此我可以根据此启用/禁用某些菜单项。
最佳答案
将 Statusbar 放在底部并将 MenuStrip 放在顶部后,
- 将表单上的 ContextMenuStrip 设置为None
- 将一个标准面板放在中间(在 MenuStrip 和 StatusStrip 之间),并将 Dock 属性设置为 Fill。
- 在您的面板(而不是表单)上设置 ContextMenuStrip 属性。
并将 ListView 和所有其他应该进入表单的控件放在 Panel
例如
~~~~~~~~~~~~~
菜单条
~~~~~~~~~~~~~
面板。停靠=填充。 ContextMenuStrip=您的上下文菜单。
~~~~~~~~~~~~~
状态条
~~~~~~~~~~~~~
关于c# - WinForms 上下文菜单 - 在某些部分未打开/检测底层控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/109262/