我将一个ContextMenuStrip
附加到两个控件(DataGridView)。
在ToolStripMenuItem
单击事件中,我目前使用:this.ActiveControl.Name
获取活动的GridView控件名称;
如果我先选择GridView单元格而不是Rt,这很好。单击它以调用ContextMenu
情况:某个时候,如果GridView控件不是活动控件,并且预先选择了单元格,则上下文菜单项单击将无法正常工作。
有什么方法可以获取启动上下文菜单项单击事件的所有者名称?
当前,在ToolStripMenuItem click事件中,我设法使用以下代码获取了原始调用者(即DataGridView):
private void CopytoolStripMenuItem1_Click(object sender, EventArgs e)
{
var grid = new DataGridView();
switch (this.ActiveControl.Name)
{
case "dGVEL1":
{
grid=dGVEL1;
break;
}
case "dGVEL2":
{
grid=dGVEL2;
break;
}
}
if (grid == null) return;
DataObject data = grid.GetClipboardContent();
Clipboard.SetDataObject(data);
}
答案 0 :(得分:0)
最后,我已经解决了这个问题。 完整的解决方案是
private void CopytoolStripMenuItem1_Click(object sender, EventArgs e)
{
ToolStripDropDownItem item = sender as ToolStripDropDownItem;
if (item == null) // Error
return;
ContextMenuStrip strip = item.Owner as ContextMenuStrip;
var grid = strip.SourceControl as DataGridView;
if (grid == null) // Control wasn't a DGV
return;
switch (grid.Name)
{
case "dGVEL1":
{
grid=dGVEL1;
break;
}
case "dGVEL2":
{
grid=dGVEL2;
break;
}
}
if (grid == null) return;
DataObject data = grid.GetClipboardContent();
Clipboard.SetDataObject(data);
}