我有一个包含 TextBox 控件数组的对话框。其中每个都将 ContextMenuStrip 属性设置为指向相同的上下文菜单控件“ ebContextMenu ”。当用户右键单击文本框时,将出现上下文菜单,然后用户选择一个项目。这会触发项目的单击事件处理程序。
我的问题是,在事件处理程序中,如何确定右键单击哪个特定的TextBox控件以显示上下文菜单?
背景资料:
菜单项的单击处理程序以:
开头 ToolStripMenuItem tsmi = (ToolStripMenuItem)sender;
ToolStrip ts = tsmi.Owner;
Control ctl = ts.Parent;
我原本期望在 ctl 变量中引用TextBox,但它会以NULL形式返回。
我最初的方法是捕获文本框的单击事件。在事件处理程序中,我检查了右键,然后设置了上下文菜单项的标记属性并触发了上下文菜单。然后在菜单项的单击事件处理程序中,我可以检查标记属性以确定单击了哪个TextBox。
问题是,我没有得到这些控件的右键事件。而是弹出系统级上下文菜单,因此我切换到使用ContextMenuStrip属性。这不会让我有机会设置标记属性来指示单击了哪个TextBox。