[英]How to change the 'object sender'?
I create DataGridView in makeDataGridView function, and maybe datagridview rightclick -> appear context menu 我在makeDataGridView函数中创建了DataGridView,也许datagridview右键单击->出现上下文菜单
This is sample code 这是示例代码
public void click(object sender, MouseEventArgs e) {
if(e.button == MouseButtons.Right) {
ContextMenuStrip menu = new ContextMenuStrip();
ToolStripItem insert = menu.Items.Add("insert");
insert.Click += new EventHandler(context_menu_click);
}
}
public void context_menu_click(object sender, EventArgs e) {
/ *
Other event and
printing .txt file from DataGridView
*/
}
I want to print a .txt file from datagridview in 'context_menu_click' function. 我想从'context_menu_click'函数中的datagridview打印一个.txt文件。 The sender of click
function is DataGridView, but context_menu_click
sender is ToolStripMenu. click
函数的发送者是DataGridView,但是context_menu_click
发送者是ToolStripMenu。
So, How can I print a .txt file from DataGridView in context_menu_click
function? 那么,如何在context_menu_click
函数中从DataGridView打印.txt文件?
public void context_menu_click(object sender, EventArgs e)
{
/*
Other event and
printing .txt file from DataGridView
*/
var item = sender as ToolStripItem ;
if (item != null)
{
DataGridView gv = item.Tag as DataGridView;
Console.WriteLine(gv.Name);
}
}
private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
ContextMenuStrip menu = new ContextMenuStrip();
ToolStripItem insert = menu.Items.Add("insert");
insert.Tag = sender;
insert.Click += new EventHandler(context_menu_click);
menu.Show(this.dataGridView1.PointToScreen(new Point(e.X, e.Y)));
}
}
You can add current DataGridView
as Tag
to the ToolStripItem
you just create 您可以将当前的DataGridView
作为Tag
添加到刚创建的ToolStripItem
使用它来获取点击事件中的DataGridView
((ContextMenuStrip)((ToolStripMenuItem)sender).GetCurrentParent()).SourceControl
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.