添加datagridview的CellMouseClick事件,建議使用第一種方法
方法一:
private void dgvBala_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right && e.ColumnIndex > -1 && e.RowIndex > -1) //點擊的是鼠標右鍵,並且不是表頭
{
//右鍵選中單元格
this.dgvBala.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected = true;
this.contextMenuStrip1.Show(MousePosition.X, MousePosition.Y); //MousePosition.X, MousePosition.Y 是爲了讓菜單在所選行的位置顯示
}
}
方法二:
設置datagridview的ContxtMenuStrip屬性,改成contextMenuStrip的name
這個方法的弊端是:點擊datagridview的表頭,也會顯示出右鍵菜單;假設選中第一行數據,然後可以在第二行等其他行右鍵,但是還是第一行是選中狀態,讓人產生歧義
private void dgvBala_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right && e.ColumnIndex > -1 && e.RowIndex > -1) //點擊的是鼠標右鍵, e.ColumnIndex > -1 && e.RowIndex > -1 不起作用
{
//右鍵選中單元格
this.dgvBala.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected = true;
this.contextMenuStrip1.Show();
}
}