Bueno, si la verdad es algo "boludo", especificamente no existe ningun evento para comprobar cuando se hace clic fuera de una celda, pero puede ser implementado por medio de una bandera y los eventos MouseClick y CellClick de la clase DataGridView.
El evento MouseClick se dispara cuando haces click en cualqier parte del DataGridView.
El evento CellClick se dispara cuando haces click en una celda cualquiera del DataGridView.
Entonces simplemente modificamos la bandera para que cuando hagas click en una celda no mande un mensaje.
Te dejo el codigo para que te des una mejor idea.
public partial class Form1 : Form
{
// Nuestra Bandera
private bool celda;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// Inicializamos con falso indicando que no hicimos click en una celda
celda = false;
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
// Si hacemos click en una celda, lo cambiamos a verdadero
celda = true;
}
private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
// Verificamos si previamente habiamos clickeado en una celda
if (celda == true)
// Lo ponemos a false para volver a capturar un click fuera de una celda
celda = false;
else
// El mensaje de error
MessageBox.Show("No se ha seleccionado una fila");
}
}
Espero que sea lo que necesites.
Saludos