簡體   English   中英

將工具提示添加到數據網格視圖上的特定列

[英]Add tooltip to specific column on Data Grid View

我有一個數據網格視圖,如:

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列,這可能嗎? 問候

您可以使用DataGridViewCellMouseEnterCellToolTipTextNeeded事件來完成此操作。 隱藏要用作源的列,然后替換示例中的控件名稱以匹配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();
    }
}

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

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

有一個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}";
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM