CLR: .Net / Mono / Boo / Otros CLR > C#

 [Solucionado] Error en DataGridView

(1/1)

DUBSTER:
Hola a todos,

He abierto este tema para ver si pueden ayudarme (ojalá que si).

En una aplicación de ventana (Windows Form) agregué un DataGridView, un TextBox y un Botón, la función de este último es que busque el valor del TextBox en un archivo de texto (*.txt).

Una vez que realiza la búsqueda, si se encontró resultados estos aparecerán en el DataGridView, de lo contrario solo mostrará un MessageBox diciendo que no hubo coincidencias con la búsqueda.

Si se deja vacío el TextBox y se presiona dicho botón de buscar, aparecerá un MessageBox diciendo que debería al menos escribir una palabra a buscar.

Todo el código funciona de maravilla, sin embargo, cuando se presiona el botón Buscar sin haber escrito nada en el TextBox, me aparece el MessageBox pero al pasar el mouse en cualquiera de las celdas del DataGridView me marca el siguiente error:



El código del evento click del botón es el siguiente:


--- Código: ---private void btBuscar_Click(object sender, EventArgs e)
        {
            Contact0.contactos.Clear();
            string palabra = tbBuscar.Text;
            string busco = "no";
            if (palabra == "")
            {
                MessageBox.Show("¡Escribe por lo menos una palabra a buscar!");
                return;
            }
            else
            {
                string archivo = Directory.GetCurrentDirectory() + "\\contactos.txt";
                StreamReader sr = new StreamReader(archivo, Encoding.Default);
                string texto;

                while ((texto = sr.ReadLine()) != null)
                {
                    if (texto.ToLower().IndexOf(palabra.ToLower()) != -1)
                    {
                        i = new Contact0();
                        string[] split = texto.Split(new char[] { '~' }, 7);
                        i.Nombre = split[0];
                        i.Domicilio = split[1];
                        i.Contacto = split[2];
                        i.TelCasa = split[3];
                        i.TelOficina = split[4];
                        i.Celular = split[5];
                        i.Correo = split[6];

                        Contact0.contactos.Add(i);

                        split = null;
                        busco = "si";
                    }
                }
                sr.Close();
            }
            if (busco == "si")
            {
                dataGridView1.DataSource = null;
                dataGridView1.DataSource = Contact0.contactos;
            }
            else
                MessageBox.Show("No se encontró ninguna coincidencia con la palabra: " + palabra);
        }
    }
--- Fin del código ---

Espero que puedan ayudarme.

Gracias.

ProfesorX:
A mi parecer, el error esta en el datagrid, que esta vacio y tratas de seleccionar una celda que no tiene nada.

No puedo estar seguro porque no tengo el codigo completo, pero quizas funcione si asignas un valor null al datasource del datagrid cuando dejes el textbox en blanco:


--- Código: ---            if (palabra == "")
            {
                MessageBox.Show("¡Escribe por lo menos una palabra a buscar!");
                dataGridView1.DataSource = null;
                return;
            }

--- Fin del código ---

Prueba y me dices.

Saludos :)

DUBSTER:
Muchas gracias, ProfesorX.

Tienes toda la razón.

:D

Navegación

[0] Índice de Mensajes

Ir a la versión completa