Nic*_*las 4 c# contextmenu winforms
我有一个ContextMenuStrip附加到两个控件 ( DataGridView)。
在ToolStripMenuItem单击事件中,我设法DataGridView使用以下代码获取原始调用者 (the ):
var menu = (ToolStripDropDownItem)sender;
var strip = (ContextMenuStrip)menu.Owner;
var dgv = (DataGridView)strip.SourceControl;
Run Code Online (Sandbox Code Playgroud)
当我点击我的ToolStripMenuItem.
但是当我使用链接到 的 sortcut 键时ToolStripMenuItem,条带。SourceControl返回空。
有谁知道为什么?
SourceControl 属性显示导致 ContextMenuStrip 打开的控件。由于在这种情况下 ContextMenuStrip 不显示,因此没有用于打开它的控件,因此该属性为 null。
此属性最好在打开事件的上下文中使用。请参阅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
//...
Run Code Online (Sandbox Code Playgroud)