如何:为 Windows 窗体 DataGridView 控件中的单个单元格添加工具提示

更新:2007 年 11 月

默认情况下,工具提示用于显示因为单元格太小而无法显示其完整内容的 DataGridView 单元格的值。但您可以重写此行为,以便为各单元格设置工具提示文本值。这在向用户显示有关单元格的附加信息或为用户提供有关单元格内容的替代说明时很有用。例如,如果有一行显示状态图标,您可能希望使用工具提示提供文本说明。

还可以通过将 DataGridView.ShowCellToolTips 属性设置为 false 来禁止显示单元格级的工具提示。

向单元格添加工具提示

  • 设置 DataGridViewCell.ToolTipText 属性。

    ' 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 'dataGridView1_CellFormatting
    
    // 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.
    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";
            }
        }
    }
    

编译代码

  • 此示例需要:

  • 一个名为 dataGridView1 的 DataGridView 控件,其中包含一个名为 Rating 列,该列用于显示一至四个星号 ("*") 的字符串值。控件的 CellFormatting 事件必须与示例中所示的事件处理程序方法关联。

  • SystemSystem.Windows.Forms 程序集的引用。

可靠编程

DataGridView 控件绑定到外部数据源或通过实现虚拟模式提供自己的数据源时,可能会遇到性能问题。为避免在处理大量数据时损失性能,请处理 CellToolTipTextNeeded 事件而不是设置多个单元格的 ToolTipText 属性。处理此事件时,获取单元格的 ToolTipText 属性的值会引发该事件并按事件处理程序中的指定返回 DataGridViewCellToolTipTextNeededEventArgs.ToolTipText 属性的值。

请参见

参考

DataGridView

DataGridView.ShowCellToolTips

DataGridView.CellToolTipTextNeeded

DataGridViewCell

DataGridViewCell.ToolTipText

其他资源

使用 Windows 窗体 DataGridView 控件中的单元格、行和列编程