0

最初の行を右クリックしてコンテキストメニューのオプションをクリックすると特定の機能を実行し、2行目を右クリックすると特定の機能を実行するようにしたいので、いくつかの異なるコードを試しましたが、どれも機能しませんでしたが、これはコードの単純化されたバージョンにすぎないので、どうすれば思いどおりに実行できますか?

    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

あなたの目的は、同じメニュー項目のクリックイベントで異なるグリッドビュー行に対して異なるタスクを実行することです。

1- マウス ダウンで、DataGridView の rowIndex を保存します。

2-メニュー項目のクリックイベントで、保存された行インデックスを使用して別のタスクを決定します。

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 に答える