0

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

    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");
        }
    }
4

1 回答 1

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)
    {

    }
}
于 2013-06-28T06:56:44.683 回答