Exportar (0) Imprimir
Expandir todo
Expandir Minimizar

DataGridViewCellErrorTextNeededEventHandler (Delegado)

Representa el método que controlará el evento CellErrorTextNeeded de DataGridView.

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

public delegate void DataGridViewCellErrorTextNeededEventHandler (
	Object sender,
	DataGridViewCellErrorTextNeededEventArgs e
)
/** @delegate */
public delegate void DataGridViewCellErrorTextNeededEventHandler (
	Object sender, 
	DataGridViewCellErrorTextNeededEventArgs e
)
No aplicable.

Parámetros

sender

Origen del evento.

e

DataGridViewCellErrorTextNeededEventArgs que contiene los datos del evento.

El evento CellErrorTextNeeded sólo se produce cuando se establece la propiedad DataSource del control DataGridView o cuando su propiedad VirtualMode es true. Controlar el evento CellErrorTextNeeded es útil cuando se desea determinar el error para una celda que depende de su valor o estado.

Cuando se controla el evento CellErrorTextNeeded y se especifica el texto de error en el controlador, aparece un glifo de error en la celda, a menos que se establezca la propiedad DataGridView.ShowCellErrors en false o la celda esté en modo de edición. Cuando el usuario mueve el puntero del mouse sobre el glifo de error, aparece el texto de error en una información sobre herramientas.

El evento CellErrorTextNeeded también se produce siempre que se recupera el valor de la propiedad DataGridViewCell.ErrorText.

Puede utilizar las propiedades DataGridViewCellEventArgs.RowIndex y ColumnIndex para determinar el estado o el valor de una celda, y utilizar esta información para cambiar o modificar la propiedad DataGridViewCellErrorTextNeededEventArgs.ErrorText. Esta propiedad se inicializa con el valor de la propiedad ErrorText de la celda, que es reemplazado por el valor del evento.

Controle el evento CellErrorTextNeeded cuando trabaje con grandes volúmenes de datos con el fin de evitar penalizaciones en el rendimiento al establecer el valor de la propiedad ErrorText para varias celdas. Para obtener más información, vea Procedimientos recomendados para ajustar la escala del control DataGridView en formularios Windows Forms.

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

Cuando se crea un delegado DataGridViewCellErrorTextNeededEventHandler, se identifica el método que controlará el evento. Para asociarlo al controlador de eventos, se debe agregar al evento una instancia del delegado. Siempre que se produzca el evento, se llamará a su controlador, a menos que se quite el delegado. Para obtener más información sobre los delegados de los controladores de eventos, vea Eventos y delegados.

El ejemplo de código siguiente muestra un delegado DataGridViewCellErrorTextNeededEventHandler que establece el texto de error para la celda que lo necesita.

private ToolStripMenuItem wholeTable = new ToolStripMenuItem();
private ToolStripMenuItem lookUp = new ToolStripMenuItem();
private ContextMenuStrip strip;
private string cellErrorText;

private void dataGridView1_CellContextMenuStripNeeded(object sender,
    DataGridViewCellContextMenuStripNeededEventArgs e)
{
    cellErrorText = String.Empty;

    if (strip == null)
    {
        strip = new ContextMenuStrip();
        lookUp.Text = "Look Up";
        wholeTable.Text = "See Whole Table";
        strip.Items.Add(lookUp);
        strip.Items.Add(wholeTable);
    }
    e.ContextMenuStrip = strip;
}

private void wholeTable_Click(object sender, EventArgs e)
{
    dataGridView1.DataSource = Populate("Select * from employees", true);
}

private DataGridViewCellEventArgs theCellImHoveringOver;

private void dataGridView1_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
    theCellImHoveringOver = e;
}

private DataGridViewCellEventArgs cellErrorLocation;

private void lookUp_Click(object sender, EventArgs e)
{
    try
    {
        dataGridView1.DataSource = Populate("Select * from employees where " +
            dataGridView1.Columns[theCellImHoveringOver.ColumnIndex].Name + " = '" +
            dataGridView1.Rows[theCellImHoveringOver.RowIndex].
            Cells[theCellImHoveringOver.ColumnIndex].Value + "'",
            true);
    }
    catch (SqlException)
    {
        cellErrorText = "Can't look this cell up";
        cellErrorLocation = theCellImHoveringOver;
    }
}

private void dataGridView1_CellErrorTextNeeded(object sender,
    DataGridViewCellErrorTextNeededEventArgs e)
{
    if (cellErrorLocation != null)
    {
        if (e.ColumnIndex == cellErrorLocation.ColumnIndex &&
            e.RowIndex == cellErrorLocation.RowIndex)
        {
            e.ErrorText = cellErrorText;
        }
    }
}

private DataTable Populate(string query, bool resetUnsharedCounter)
{
    if (resetUnsharedCounter)
    {
        ResetCounter();
    }

    // Alter the data source as necessary
    SqlDataAdapter adapter = new SqlDataAdapter(query,
        new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;" +
        "Initial Catalog=Northwind;Data Source=localhost"));

    DataTable table = new DataTable();
    table.Locale = System.Globalization.CultureInfo.InvariantCulture;
    adapter.Fill(table);
    return table;
}

private Label count = new Label();
private int unsharedRowCounter;

private void ResetCounter()
{
    unsharedRowCounter = 0;
    count.Text = unsharedRowCounter.ToString();
}

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0
Mostrar:
© 2015 Microsoft