2015-07-14 4 views
0

Я создаю DataGridView в функции makeDataGridView, и, возможно, DataGridView RightClick -> появится контекстное менюКак изменить «отправителя объекта»?

Это пример кода

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 
     */ 
} 

Я хочу напечатать файл .txt из DataGridView в функции 'context_menu_click'. Отправитель click функция DataGridView, но context_menu_click отправитель ToolStripMenu.

Итак, как я могу напечатать .txt-файл из DataGridView в context_menu_click функции?

+0

Вы пробовали Передает 'sender' и Параметры 'e' из метода' click'? То есть 'insert.Click + = new EventHandler (context_menu_click (sender, e));' – Ben

+0

Почему вы не используете 'DataGridView' непосредственно в событии' context_menu_click' –

ответ

0
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))); 
    } 
} 

Вы можете добавить текущий DataGridView, как Tag к ToolStripItem вы просто создать

0

Используйте это, чтобы получить DataGridView в вашем случае клик

((ContextMenuStrip)((ToolStripMenuItem)sender).GetCurrentParent()).SourceControl