private void Procesar_Click(object sender, EventArgs e) { if (dgvPuntos.Rows.Count < 2) { MessageBox.Show("Debe ingresar valores para procesar", "Coordenadas vacías", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } BloquearControles(); //DEBEN ESTAR ORDENADOS LOS PUNTOS, SEGUN LAS Xi, PARA PODER SABER SI SON EQUIESPACIADAS dgvPuntos.Sort(dgvPuntos.Columns[0], ListSortDirection.Ascending); _valores = new List <KeyValuePair <double, double> >(); foreach (DataGridViewRow row in dgvPuntos.Rows) { _valores.Add( new KeyValuePair <double, double>( double.Parse(row.Cells["X"].Value.ToString()), double.Parse(row.Cells["Y"].Value.ToString()) )); } if (opLagrange.Checked) { _lagrange = new Lagrange(_valores); txtPolinomio.Text = _lagrange.ObtenerPx(); } else if (opNGProgre.Checked || opNGRegresiva.Checked) { _ng = new Ng(_valores); txtPolinomio.Text = _ng.ObtenerPx(opNGProgre.Checked, opNGRegresiva.Checked); } }