Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Evento DataGridView.CellValueNeeded

 

Publicado: octubre de 2016

Se produce cuando el valor de la propiedad VirtualMode del control DataGridView es true y DataGridView requiere un valor para una celda para dar formato a la celda y mostrarla.

Espacio de nombres:   System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)

public event DataGridViewCellValueEventHandler CellValueNeeded

Use this event in virtual mode to populate cells with data from a custom data store without causing rows to become unshared. For more information about row sharing, see Best Practices for Scaling the Windows Forms DataGridView Control. For more information about virtual mode, see Virtual Mode in the Windows Forms DataGridView Control.

To add user-specified values to your custom data store, handle the E:System.Windows.Forms.DataGridView.CellValuePushed event.

For more information about handling events, see NIB: Consuming Events.

The following code example handles the E:System.Windows.Forms.DataGridView.CellValueNeeded event to populate cells with positive integers. This example is part of a larger example available in the P:System.Windows.Forms.DataGridView.VirtualMode reference topic.

#region "data store maintance"
const int initialValue = -1;

private void dataGridView1_CellValueNeeded(object sender,
    DataGridViewCellValueEventArgs e)
{
    if (store.ContainsKey(e.RowIndex))
    {
        // Use the store if the e value has been modified 
        // and stored.            
        e.Value = store[e.RowIndex];
    }
    else if (newRowNeeded && e.RowIndex == numberOfRows)
    {
        if (dataGridView1.IsCurrentCellInEditMode)
        {
            e.Value = initialValue;
        }
        else
        {
            // Show a blank value if the cursor is just resting
            // on the last row.
            e.Value = String.Empty;
        }
    }
    else
    {
        e.Value = e.RowIndex;
    }
}

private void dataGridView1_CellValuePushed(object sender,
    DataGridViewCellValueEventArgs e)
{
    store.Add(e.RowIndex, int.Parse(e.Value.ToString()));
}
#endregion

private Dictionary<int, int> store = new Dictionary<int, int>();

.NET Framework
Disponible desde 2.0
Volver al principio
Mostrar: