我有一个 ContextMenuStrip
附加到两个控件( DataGridView
)。
在 ToolStripMenuItem
单击事件中,我设法使用以下代码获取原始调用者(DataGridView
):
var menu = (ToolStripDropDownItem)sender;
var strip = (ContextMenuStrip)menu.Owner;
var dgv = (DataGridView)strip.SourceControl;
当我点击我的
ToolStripMenuItem
时它工作得很好。但是当我使用链接到
ToolStripMenuItem
的 sortcut 键时, strip 。 SourceControl
返回空值。有谁知道为什么?
最佳答案
SourceControl 属性显示导致 ContextMenuStrip 打开的控件。由于在这种情况下 ContextMenuStrip 不显示,因此没有用于打开它的控件,因此该属性为空。
此属性更适合在打开事件的上下文中使用。见 ContextMenuStrip.SourceControl 。
更新:确定哪个 DataGridView 是 ToolStripMenuItem 单击的预期接收器的一种方法是查看哪个具有焦点:
var dgv = this.ActiveControl as DataGridView;
if ( dgv != null) // make sure to check for null before trying to use this var
//...
关于c# - 使用快捷键时获取我的 ContextMenuStrip 的 SourceControl,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5665042/