En el código siguiente, el evento datagridview1_SelectionChanged que se activa después de que la selección se ha cambiado a través del código en el controlador de eventos datagridview1_RowsAdded, la propiedad CurrentRow es nula. pero lo acabo de configurar en el controlador datagridview1_RowsAdded y no es nulo allí.

Sin embargo, si comento las dos líneas en el controlador datagridview1_RowsAdded y selecciono la fila haciendo clic en cualquier fila, el programa funciona bien. ¿Puede alguien decirme por qué está pasando esto?

Aquí está mi código:

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
    dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1];
    dataGridView1.CurrentCell.Selected = true;
}

private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
    if (dataGridView1.CurrentRow != null)
    {
        if (dataGridView1.CurrentRow.Index != -1)
        {
           dataGridView2.Enabled = true;
           dataGridView3.Enabled = true;
           dataGridView4.Enabled = true;
        }
        else
        {
           dataGridView2.Enabled = false;
           dataGridView3.Enabled = false;
           dataGridView4.Enabled = false;
        }
    }
    else
    {
        dataGridView2.Enabled = false;
        dataGridView3.Enabled = false;
        dataGridView4.Enabled = false;
    }
}
1
armin 2 ene. 2012 a las 22:57
Perdón por el título de la pregunta, es un poco engañoso
 – 
armin
2 ene. 2012 a las 23:02

1 respuesta

La mejor respuesta

En su método RowsAdded, ha seleccionado la celda actual pero no la fila actual. Puede seleccionar la fila actual con esto:

dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Selected = true;
1
Abbas 3 ene. 2012 a las 03:25
No funciona porque después de la primera línea en rows_added va al evento selection_changed antes de ejecutar otras líneas.
 – 
armin
4 ene. 2012 a las 11:23
Para ser claros: ¿está diciendo que la propiedad CurrentRow sigue siendo nula después de una selección explícita? Intente seleccionar la fila antes de seleccionar la celda.
 – 
Abbas
4 ene. 2012 a las 14:15