我正在尝试获取行的rowindex,我右键单击该行以调用contextmenu。
DatagridView的属性contextmenu设置为此contextmenu。
有可能以某种简单的方式吗?
祝你好运
答案 0 :(得分:1)
是的,您需要为DataGridView处理MouseDown事件,然后使用HitTest方法返回给定坐标的行和/或列索引。
例如:
private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
DataGridView.HitTestInfo hit = dataGridView1.HitTest(e.X, e.Y);
if (hit.Type == DataGridViewHitTestType.Cell)
{
Console.WriteLine(hit.RowIndex);
}
}
}
答案 1 :(得分:0)
我更改CellContextMenuStripNeeded
事件中的选择,然后使用SelectedRows
成员找到它。
private void dataGridView_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)
{
var Dgv = sender as DataGridView;
if (Dgv != null)
{
// Change the selection to reflect the right-click
Dgv.ClearSelection();
Dgv.Rows[e.RowIndex].Selected = true;
}
}
private void myToolStripMenuItem_Click(object sender, EventArgs e)
{
// Now pick up the selection as we know this is the row we right-clicked on
if (dataGridView.SelectedRows.Count > 0)
{
DoSomethingAmazing(dataGridView.SelectedRows[0]);
}
}
这也可以突出显示您单击的行。