Мне нужно разрешить пользователю выбирать строку, нажимая на заголовок строки, чтобы разрешить удаление строки, но при щелчке по заголовку строки первая ячейка получает фокус, а текст выделяется, что мне нужно предотвратить, поэтому пользователь не может случайно внести изменения в эту первую ячейку.
Вот пример того, что происходит: 
Как видите, первая ячейка имеет фокус и пользователь может редактировать эту ячейку, когда все, что было сделано, - щелчок по заголовку строки.
Я попытался ответить на этот вопрос SO , но ни одно событие не сработало, когда я щелкнул строку заголовок. Вот код, который я использовал для этой попытки:
private void dgvCategories_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
if (e.StateChanged == DataGridViewElementStates.Selected)
{
Console.WriteLine("true");
dgvCategories.ReadOnly = true;
}
}
private void dgvCategories_CellStateChanged(object sender, DataGridViewCellStateChangedEventArgs e)
{
if (e.StateChanged == DataGridViewElementStates.Selected)
{
Console.WriteLine("false");
dgvCategories.ReadOnly = false;
}
}
Я также пытался поэкспериментировать с различными параметрами DataGridViewEditMode, но ни один из них не достиг того, что мне нужно.
DGV SelectionMode установлен в RowHeaderSelect.
Мне все еще нужно иметь возможность получить скрытое поле «id» в строке для процесса удаления. Вот мой код для этого:
private void btnDeleteRow_Click(object sender, EventArgs e)
{
int index = dgvCategories.SelectedRows[0].Index;
string rowId = dgvCategories[0, index].Value.ToString();
string deleteString = string.Format("DELETE FROM masterfiles.xref WHERE id = " + rowId);
conn.Open();
NpgsqlCommand deleteCmd = new NpgsqlCommand(deleteString, conn);
deleteCmd.ExecuteNonQuery();
conn.Close();
}
Это работает; Мне просто нужно предотвратить автоматическую фокусировку первой ячейки для редактирования при выделении строки. Мне все еще нужно разрешить пользователю выбирать отдельные ячейки для редактирования.