将工具提示添加到数据网格视图上的特定列

时间:2018-09-21 22:28:13

标签: c# winforms

我有一个数据网格视图,如:

if (this.dgv.Rows.Count < 1)
                {
                    this.dgv.DataSource = null;
                    this.dgv.DataBindings.Clear();
                    if (this.dgv.Columns.Count == 0) this.dgv.ColumnCount = 15;
                    this.dgv.ColumnHeadersVisible = true;

                    this.dgv.Columns[4].Name = "Added By";
                    this.dgv.Columns[5].Name = "AddedByFullName";
                }

如您所见,我的第4列名为Added By

 this.dgv.Columns[4].Name = "Added By";

第5列称为AddedByFullName

 this.dgv.Columns[5].Name = "AddedByFullName";

我想知道如何使用AddedByFullName列作为Added By列的工具提示,然后我将删除AddedByFullName列,这可能吗?问候

4 个答案:

答案 0 :(得分:2)

您可以使用CellMouseEnter的{​​{1}}或CellToolTipTextNeeded事件来执行此操作。隐藏要用作源的列,然后替换示例中的控件名称以匹配您的DataGridView

DataGridView

答案 1 :(得分:1)

使用CellMouseEnter事件可以实现此目的,但也可以通过Microsoft REFERENCECellFormatting事件来完成

  private void dgJobNotes_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if ((e.ColumnIndex == this.dgJobNotes.Columns["Added By"].Index)
            && e.Value != null)
            {
   dgJobNotes.Rows[e.RowIndex].Cells[e.ColumnIndex].ToolTipText = dgJobNotes.Rows[e.RowIndex].Cells[5].Value.ToString();
            }

答案 2 :(得分:0)

DataGridViewColumn类具有ToolTipText属性。如果将其设置在列上,将获得列标题的工具提示。如果要在每个单元格上显示工具提示,则可以实现CellFormatting事件处理程序,从列中拉出正确的单元格并设置单元格的ToolTipText属性。像这样:

 private const int InterestingColumnNumber = 5;
 private const string InterestingColumnToolTipText = "This Space For Rent";

 private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
 {
     var senderGridView = sender as DataGridView;
     if (senderGridView != null)
     {
         if (e.ColumnIndex == InterestingColumnNumber) 
         {
             var cell = senderGridView.Rows[e.RowIndex].Cells[InterestingColumnNumber];
             cell.ToolTipText = InterestingColumnToolTipText;
         }
     }
 }

答案 3 :(得分:0)

有一个CellToolTipTextNeeded事件,它是专门为设置工具提示文本而创建的。您无需使用CellFormattingCellMouseEnter。如果要将第5列的文本显示为第4列的工具提示,则可以编写:

private void g_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
    if (e.ColumnIndex == 4 && e.RowIndex >= 0)
    {
        e.ToolTipText = $"{dataGridView1[5, e.RowIndex].Value}";
    }
}