Supongamos que tenemos un objeto de la clase DataGridView
y necesitamos validar los datos que introduce el usuario en una celda determinada.
Vamos a suponer implementada una función llamada EsDominio
que recibe el contenido de la celda (debe ser un dominio de Internet) y nos devuelve true
o false
dependiendo de si el dominio está o no bien escrito.
Cuando validamos el contenido de una celda, debemos tener en cuenta que si el usuario se posiciona sobre la fila del datagridview
para añadir texto y sale de ella sin añadir nada, no se producirá el alta y no se debe validar nada ya que el contenido quedará vacío. Para eso debemos comprobar que la fila que estamos validando no sea dicha fila. Para ello usaremos la propiedad IsNewRow
de la fila.
Veamos el código:
private void grdDominios_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (!grdDominios.Rows[e.RowIndex].IsNewRow)
{
if (!EsDominio(e.FormattedValue.ToString()))
{
MessageBox.Show("El valor introducido no está bien escrito", "Dominio",
MessageBoxButtons.OK, MessageBoxIcon.Error);
e.Cancel = true;
}
}
}