Como adicionar ToolTips a células individuais em um controle DataGridView dos Windows Forms
Por padrão, as Dicas de Ferramentas são usadas para exibir os valores de DataGridView células que são muito pequenas para mostrar todo o seu conteúdo. Contudo, é possível substituir esse comportamento para definir valores de texto de dicas de ferramentas para células individuais. Isso é útil para exibir aos usuários informações adicionais sobre uma célula ou para fornecer aos usuários uma descrição alternativa do conteúdo da célula. Por exemplo, se você tiver uma linha que exibe ícones de status, talvez seja recomendável fornecer explicações de texto usando dicas de ferramenta.
Você também pode desabilitar a exibição de Dicas de Ferramentas em nível de célula definindo a DataGridView.ShowCellToolTips propriedade como false
.
Adicionar um ToolTip a uma célula
Definir a propriedade 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
Compilando o código
Este exemplo requer:
Um DataGridView controle chamado
dataGridView1
que contém uma coluna nomeadaRating
para exibir valores de cadeia de caracteres de um a quatro símbolos de asterisco ("*"). O CellFormatting evento do controle deve ser associado ao método do manipulador de eventos mostrado no exemplo.Referências aos assemblies System e System.Windows.Forms.
Programação robusta
Quando você vincula o controle a uma fonte de dados externa ou fornece sua própria fonte de dados implementando o DataGridView modo virtual, você pode encontrar problemas de desempenho. Para evitar uma penalidade de desempenho ao trabalhar com grandes quantidades de dados, manipule o CellToolTipTextNeeded evento em vez de definir a ToolTipText propriedade de várias células. Quando você manipula esse evento, obter o valor de uma propriedade de célula ToolTipText gera o evento e retorna o valor da propriedade conforme especificado no manipulador de DataGridViewCellToolTipTextNeededEventArgs.ToolTipText eventos.
Confira também
.NET Desktop feedback