【发布时间】:2012-07-19 18:11:59
【问题描述】:
我有一个带有 DataGridView 控件的 WINFORM 应用程序,该应用程序与 ContextMenuStrip 控件挂钩。
ContextMenuStrip 触发事件以在 DataGridView 和 Clipboard 之间执行复制/粘贴。
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
CopyClipboard();
}
private void CopyClipboard()
{
DataObject d = myGrid.GetClipboardContent();
Clipboard.SetDataObject(d);
}
private void pasteCtrlVToolStripMenuItem_Click(object sender, EventArgs e)
{
PasteClipboard();
}
我已将另一个 DataGridView 添加到我的应用程序中,并希望在它们之间共享 ContextMenuStrip,因为根据我上面的代码,它已硬编码到我的网格 myGrid 。
我相信修改我的代码以从 sender 投射一个新的 DataGridView 控件只是一个简单的练习:
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
CopyClipboard(sender);
}
private void CopyClipboard(object sender)
{
var grid = (DataGridView)sender;
DataObject d = grid.GetClipboardContent();
Clipboard.SetDataObject(d);
}
private void pasteCtrlVToolStripMenuItem_Click(object sender, EventArgs e)
{
var grid = (DataGridView)sender;
PasteClipboard(grid);
}
当然,我发现 sender 是 ToolStripMenuItem。
有没有办法通过 sender 或 EventArgs e 引用原始的 DataViewGrid ?
还有,感谢您的阅读:)
【问题讨论】:
标签: c# datagridview casting contextmenustrip sender