ciao,
io proverei ad impostare la proprietà "SelectionMode" della griglia a "FullRowSelect", in modo da far selezionare sempre una riga quando il mouse clicca sulla griglia.
In più puoi dirgli cosa faer quando si "entra" nella riga, e si "esce" da una riga (precedente), tenendo a mente (List<int> dei selezionati) quale riga è stata appena cliccata.
Qualcosa del genere:
List<int> selezionate = new List<int>();
private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
{
//--- se è già selezionata la deseleziono
if (dataGridView1.Rows[e.RowIndex].Selected && selezionate.Contains(e.RowIndex))
{
dataGridView1.Rows[e.RowIndex].Selected = false;
selezionate.Remove(e.RowIndex);
}
//--- seleziono anche le altre
foreach (int riga in selezionate)
dataGridView1.Rows[riga].Selected = true;
}
private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Rows[e.RowIndex].Selected && !selezionate.Contains(e.RowIndex))
selezionate.Add(e.RowIndex);
}
come vedi al click viene selezionata/deselezionata a seconda dello stato precedente, senza premere CTRL.
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo