DataGridView añadiendo una nueva fila cuando no debería, comportamiento extraño.
En C#, tengo un objeto de tipo Human con propiedades Id, Name, Address … basado en eso, he creado una lista de Humans y hice
humansBindingSource.DataSource = Humans
después de eso lo conecté a DataGridView
dgvHumans.DataSource = humansBindingSource
Todo esto funciona como debería, pero algo extraño sucede cuando hago clic para agregar una nueva fila en la parte inferior, en una situación en la que escribo algo en DataGridView en el campo Nombre y luego borro todas las letras ingresadas porque cambié de opinión y no voy a agregar uno nuevo y hago clic en la línea anterior, esa fila queda con Id = 0, Nombre = null, Dirección = null y también se agrega un nuevo objeto a la lista… no debería ser así, debería cancelar esa entrada como en el caso cuando se hace clic en la fila para una nueva entrada y luego se hace clic en cualquier fila anterior. Espero haber logrado explicar cuál es el problema.
davy.ai
El problema que estás experimentando con el DataGridView al agregar una nueva fila en la parte inferior y luego eliminar los valores en el campo Nombre es que el DataGridView está creando una nueva instancia del objeto Humano con valores predeterminados (Id = 0, Nombre = null, Dirección = null) y agregándolo a la lista Humans.
Para evitar este comportamiento, puedes manejar el evento RowValidating del DataGridView y verificar si la nueva fila tiene algún valor. Si no lo tiene, puedes cancelar el evento y evitar que se agregue la nueva fila a la lista.
Aquí tienes un ejemplo de código que demuestra este enfoque:
Al manejar el evento RowValidating de esta manera, puedes evitar el problema de agregar un nuevo objeto Humano con valores predeterminados a la lista cuando el usuario elimina los valores en el campo Nombre.