Добавить всплывающую подсказку к определенному столбцу в представлении таблицы данных - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть 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, это возможно?Привет

Ответы [ 4 ]

0 голосов
/ 22 сентября 2018

Существует событие 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}";
    }
}
0 голосов
/ 22 сентября 2018

Использование события CellMouseEnter может быть возможным для достижения этого, но это также может быть сделано с событием CellFormatting как Microsoft ССЫЛКА

  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();
            }
0 голосов
/ 22 сентября 2018

Класс 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;
         }
     }
 }
0 голосов
/ 22 сентября 2018

Вы можете сделать это, используя событие CellMouseEnter или CellToolTipTextNeeded для DataGridView.Скройте столбец, который вы хотите использовать в качестве источника, затем замените имя элемента в образце, чтобы оно соответствовало вашему 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...