2013-06-28 86 views
0

我想要这样做,如果第一行被右键单击并且上下文菜单上的一个选项被点击,它将执行一个特定的功能,如果第二行被右键单击,它将做一个特定的功能等等。所以我尝试了几种不同的代码,但都没有工作,但这只是我的代码的简化版本,所以我怎么才能让它按照我的意愿去做呢?dataGridView受控上下文菜单点击

private void dataGridView1_MouseClick(object sender, MouseEventArgs e) 
    { 
     DataGridViewRow row = new DataGridViewRow(); 
     if (row.Selected.Equals(0) == true && e.Button == MouseButtons.Right && contextMenuStrip1.Text == "Test") 
     { 
      MessageBoxEx.Show("Test ok"); 
     } 
    } 

回答

1

你的目的是为不同的gridview行执行不同的任务,并且具有相同的菜单项点击事件。

1-在鼠标向下时,只保存DataGridView rowIndex。

2-在菜单项单击事件上,使用保存的rowindex来决定您的不同任务。

3-由于鼠标单击将在上下文菜单后触发,因此使用MouseDown而不是鼠标单击事件。

int RowIndex = 0; 
private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) 
{ 
    if (dataGridView1.CurrentRow == null) 
     return;   

    if (e.Button == MouseButtons.Right) 
    { 
     RowIndex = dataGridView1.CurrentRow.Index ;    
    } 
} 

private void testToolStripMenuItem_Click(object sender, EventArgs e) //MenuStrip item click event 
{ 
    if (RowIndex == 0) 
    { 

    } 
    else if (RowIndex == 1) 
    { 

    } 
} 
+0

谢谢,这个作品完美。 –

+0

很高兴看到它的帮助。请将其标记为答案 – Munawar