Подтвердить что ты не робот

Отображение подсказки для каждого элемента в строке datagridview, когда указатель мыши над ним

Как вы можете показать всплывающую подсказку для datagridview для каждого элемента в datagridview при наведении указателя мыши на элемент в этой конкретной строке?

У меня есть таблица product со столбцами:

product name 
product price 
product description
product image ....

У меня есть требование, чтобы у меня есть datagridview с столбцами, и я получаю их из базы данных:

product name 
product price 
product image ....

Теперь я хочу показать всплывающую подсказку следующим образом: если у меня есть мышь над изображением продукта, описание продукта будет отображаться для этого продукта. Я хочу сделать это для каждой строки. Кто-нибудь может помочь в этом?

4b9b3361

Ответ 1

Посмотрите на свойство DataGridViewCell.ToolTipText и используйте событие DataGridView CellFormatting, чтобы установить это значение свойства. Вы можете использовать свойство event DataGridViewCellFormattingEventArgs ColumnIndex, чтобы определить, запускается ли событие для столбца, для которого вы хотите установить подсказку инструмента, и если это так использовать событие RowIndex, чтобы указать значение подсказки инструмента.

Образец в статье MSDN, с которой я связан, имеет прекрасный пример использования, но ваш код может выглядеть примерно так:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
    if (e.ColumnIndex == dataGridView1.Columns[nameOrIndexOfYourImageColumn].Index) {
        var cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
        // Set the Cell ToolTipText.  In this case we're retrieving the value stored in 
        // another cell in the same row (see my note below).
        cell.ToolTipText = dataGridView1.Rows[e.RowIndex].Cells[nameOrIndexOfYourDescriptionColumn].Value.ToString();
    }
}

Где:
 nameOrIndexOfYourImageColumn= имя столбца или индекс вашего столбца изображения   nameOrIndexOfYourDescriptionColumn= имя столбца или значение индекса с вашими данными описания.

Примечание: вам понадобится какой-то способ получить данные описания строки. Обычный способ сделать это - иметь столбец для него в вашем DataGridView, но сделать, поскольку вы не хотите отображать этот столбец, установите для его свойства Visible значение false. Однако есть и другие варианты.

Ответ 2

Я сделал это, сохранив текст для всплывающей подсказки для каждой ячейки в свойстве Tag каждого DataGridViewCell.

Затем в событии DataGridView.CellMouseEnter вы можете увидеть, в какой ячейке мышь использует значения DataGridViewCellEventArgs.ColumnIndex и DataGridViewCellEventArgs.RowIndex, и установите текст из соответствующей ячейки в качестве текста всплывающей подсказки с помощью ToolTip.SetToolTip.

Если работает очень хорошо.

Что-то вроде этого:

private void dgv_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex >= 0 & e.RowIndex >= 0) 
    {
        ToolTip1.SetToolTip(dgv, Convert.ToString(dgv.Item(e.ColumnIndex, e.RowIndex).Tag));
    }
}

Ответ 3

При заполнении datagridview просто установите для свойства TooltipText ячейки ячейку для текста, который вы хотите отобразить.