Procedimiento para agregar información sobre herramientas a celdas individuales en un control DataGridView de formularios Windows Forms

De manera predeterminada, la información sobre herramientas se usa para mostrar los valores de las celdas DataGridView que son demasiado pequeñas para mostrar todo su contenido. Sin embargo, puede invalidar este comportamiento para establecer valores de texto sobre herramientas para celdas individuales. Esto resulta útil para mostrar a los usuarios información adicional sobre una celda o proporcionar a los usuarios una descripción alternativa del contenido de la celda. Por ejemplo, si tiene una fila que muestra iconos de estado, puede proporcionar explicaciones de texto mediante información sobre herramientas.

También puede deshabilitar la presentación de información sobre herramientas de nivel de celda estableciendo la propiedad DataGridView.ShowCellToolTips en false.

Para agregar información sobre herramientas a una celda

  • Establecer la propiedad DataGridViewCell.ToolTipText.

    // Sets the ToolTip text for cells in the Rating column.
    void dataGridView1_CellFormatting(Object^ /*sender*/, 
        DataGridViewCellFormattingEventArgs^ e)
    {
        if ( (e->ColumnIndex == this->dataGridView1->Columns["Rating"]->Index)
            && e->Value != nullptr )
        {
            DataGridViewCell^ cell = 
                this->dataGridView1->Rows[e->RowIndex]->Cells[e->ColumnIndex];
            if (e->Value->Equals("*"))
            {                
                cell->ToolTipText = "very bad";
            }
            else if (e->Value->Equals("**"))
            {
                cell->ToolTipText = "bad";
            }
            else if (e->Value->Equals("***"))
            {
                cell->ToolTipText = "good";
            }
            else if (e->Value->Equals("****"))
            {
                cell->ToolTipText = "very good";
            }
        }
    }
    
    // Sets the ToolTip text for cells in the Rating column.
    void dataGridView1_CellFormatting(object sender,
        DataGridViewCellFormattingEventArgs e)
    {
        if ( (e.ColumnIndex == this.dataGridView1.Columns["Rating"].Index)
            && e.Value != null )
        {
            DataGridViewCell cell =
                this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
            if (e.Value.Equals("*"))
            {
                cell.ToolTipText = "very bad";
            }
            else if (e.Value.Equals("**"))
            {
                cell.ToolTipText = "bad";
            }
            else if (e.Value.Equals("***"))
            {
                cell.ToolTipText = "good";
            }
            else if (e.Value.Equals("****"))
            {
                cell.ToolTipText = "very good";
            }
        }
    }
    
    ' Sets the ToolTip text for cells in the Rating column.
    Sub dataGridView1_CellFormatting(ByVal sender As Object, _
        ByVal e As DataGridViewCellFormattingEventArgs) _
        Handles dataGridView1.CellFormatting
    
        If e.ColumnIndex = Me.dataGridView1.Columns("Rating").Index _
            AndAlso (e.Value IsNot Nothing) Then
    
            With Me.dataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex)
    
                If e.Value.Equals("*") Then
                    .ToolTipText = "very bad"
                ElseIf e.Value.Equals("**") Then
                    .ToolTipText = "bad"
                ElseIf e.Value.Equals("***") Then
                    .ToolTipText = "good"
                ElseIf e.Value.Equals("****") Then
                    .ToolTipText = "very good"
                End If
    
            End With
    
        End If
    
    End Sub
    

Compilar el código

  • Para este ejemplo se necesita:

  • Control DataGridView denominado dataGridView1 que contiene una columna denominada Rating para mostrar valores de cadena de uno a cuatro símbolos de asterisco ("*"). El evento CellFormatting del control debe estar asociado al método del controlador de eventos que se muestra en el ejemplo.

  • Referencias a los ensamblados System y System.Windows.Forms.

Programación sólida

Al enlazar el control DataGridView a un origen de datos externo o proporcionar su propio origen de datos mediante la implementación del modo virtual, es posible que encuentre problemas de rendimiento. Para evitar una penalización de rendimiento al trabajar con grandes cantidades de datos, controle el evento CellToolTipTextNeeded en lugar de establecer la propiedad ToolTipText de varias celdas. Al controlar este evento, obtener el valor de una propiedad de celda ToolTipText genera el evento y devuelve el valor de la propiedad DataGridViewCellToolTipTextNeededEventArgs.ToolTipText tal y como se especifica en el controlador de eventos.

Consulte también