Esta documentación está archivada y no tiene mantenimiento.

DataGridView.CellValueNeeded (Evento)

Actualización: noviembre 2007

Se produce cuando el valor de la propiedad VirtualMode del control DataGridView es true y el control DataGridView requiere un valor para una celda a fin de aplicar 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
/** @event */
public void add_CellValueNeeded (DataGridViewCellValueEventHandler value)
/** @event */
public void remove_CellValueNeeded (DataGridViewCellValueEventHandler value)

JScript no admite eventos.

Utilice este evento en modo virtual para rellenar las celdas con datos de un almacén de datos personalizado sin que las filas dejen de estar compartidas. Para obtener más información sobre el uso compartido de filas, vea Procedimientos recomendados para ajustar la escala del control DataGridView en formularios Windows Forms. Para obtener más información sobre el modo virtual, vea Modo virtual del control DataGridView de formularios Windows Forms.

Para agregar los valores especificados por el usuario a su almacén de datos personalizado, controle el evento CellValuePushed.

Para obtener más información sobre la forma de controlar eventos, vea Utilizar eventos.

El ejemplo de código siguiente controla el evento CellValueNeeded para rellenar las celdas con enteros positivos. Este ejemplo forma parte de un ejemplo más extenso que está disponible en el tema referente a VirtualMode.

#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>();


#region "data store maintance"
private final int INITIALVALUE = -1;

private void dataGridView1_CellValueNeeded(Object sender,
    DataGridViewCellValueEventArgs e)
{
    if (store.ContainsKey(e.get_RowIndex())) {
        // Use the store if the e value has been modified 
        // and stored.            
        e.set_Value((Int32)store.get_Item(e.get_RowIndex()));
    }
    else {
        if (newRowNeeded && e.get_RowIndex() == numberOfRows) {
            if (dataGridView1.get_IsCurrentCellInEditMode()) {
                e.set_Value((Int32)INITIALVALUE);
            }
            else {
                // Show a blank e if the cursor is just loitering
                // over(the)
                // last row.
                e.set_Value("");
            }
        }
        else {
            e.set_Value((Int32)e.get_RowIndex());
        }
    }
} //dataGridView1_CellValueNeeded

private void dataGridView1_CellValuePushed(Object sender,
    DataGridViewCellValueEventArgs e)
{
    store.Add(e.get_RowIndex(), Int32.Parse(e.get_Value().ToString()));
} //dataGridView1_CellValuePushed
#endregion

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


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0
Mostrar: