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 denominadaRating
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
.NET Desktop feedback