There is no automatic way to do it - indeed there is little but the Brute Force and Ignorance approach either! :laugh:
This is a dummy which does what you want: If you click the Right button, it sets Row select, the middle button sets cell select back.
private void dgvNames_MouseClick(object sender, MouseEventArgs e)
{
DataGridView dgv = sender as DataGridView;
if (dgv != null)
{
if (e.Button == MouseButtons.Right)
{
DataGridViewSelectedCellCollection cells = dgv.SelectedCells;
dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
foreach (DataGridViewCell cell in cells)
{
DataGridViewRow row = dgv.Rows[cell.RowIndex];
row.Selected = true;
}
}
else if (e.Button == MouseButtons.Middle)
{
DataGridViewSelectedRowCollection rows = dgv.SelectedRows;
dgv.SelectionMode = DataGridViewSelectionMode.CellSelect;
foreach (DataGridViewRow row in rows)
{
DataGridViewCell cell = row.Cells[0];
cell.Selected = true;
}
}
}
}