【问题标题】:Add tooltip to specific column on Data Grid View将工具提示添加到数据网格视图上的特定列
【发布时间】:2018-09-21 22:28:13
【问题描述】:

我有一个像这样的数据网格视图:

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 列,这可能吗?问候

【问题讨论】:

  • 他们紧挨着!在几毫米外重复文本的工具提示有什么好处?
  • 我想删除AddedByFullName列并将其转换为Added By的Tooltip,我不会离开AddedByFullName @Plutonix

标签: c# winforms


【解决方案1】:

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

private void dgv_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
    if ((e.ColumnIndex == dgv.Columns["Added By"].Index)
        && (e.RowIndex > -1))
    {
        dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].ToolTipText = dgv.Rows[e.RowIndex].Cells[dgv.Columns["AddedByFullName"].Index].Value.ToString();
    }
}

【讨论】:

    【解决方案2】:

    使用CellMouseEnter 事件可以实现此目的,但也可以使用CellFormatting 事件作为Microsoft REFERENCE 来完成

      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();
                }
    

    【讨论】:

      【解决方案3】:

      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;
               }
           }
       }
      

      【讨论】:

        【解决方案4】:

        有一个CellToolTipTextNeeded 事件专门用于设置工具提示文本。您不需要使用 CellFormatting 或 CellMouseEnter。如果要将第 5 列的文本显示为第 4 列的工具提示,则可以编写:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-16
          • 1970-01-01
          • 1970-01-01
          • 2013-06-02
          • 2018-05-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多