我已将 ContextMenuStrip 附加到 TabControl 并为 OnMouseDown 设置了一个处理程序,该处理程序执行以下操作:
if (e.Button != MouseButtons.Right) {
return;
}
for (var i = 0; i < tabControl1.TabCount; ++i) {
var point = new Point(e.X, e.Y);
if (tabControl1.GetTabRect(i).Contains(point)) {
tabPageContextMenu.Show(tabControl1, point);
}
}
这正确显示了 ContextMenuStrip,但是,在 ContextMenuStrip 包含的 MenuItem 的 Click 事件中,我似乎无法访问实际生成 ContextMenuStrip 的底层 TabControl 或 TabPage。
那么问题就变成了:我怎样才能最好地访问原始控件?显然,在 MouseDown 处理程序中,我可以将控件分配给私有类变量,但我认为通过一些我目前忽略的属性有一种标准方式。
提前致谢!