Можно использовать любое из следующих решений:
- Добавить сводное свойство только для чтения к классу и использовать связанный столбец.
- Используйте событие
CellFormatting
, чтобы указать значение длянесвязанный столбец. - Использование события
CellPainting
для пользовательского отображения содержимого связанной или несвязанной ячейки. - Использование элемента управления
DataRepeater
.
Вариант 1 - Добавление сводного свойства
Вы можете добавить новое свойство Summary
, содержащее информацию, которую вы хотите отобразить в ячейке:
Class Book
{
// rest of properties ...
public string Summary
{
get
{
return
$"Title: {this.Title}\n" +
$"Author: {this.Author}\n" +
$"Copyright Date: {this.CopyrightDate}";
}
}
}
Затем вы можете просто использовать связанный столбец для отображения данных в DataGridView
.
Примечание 1: Если модель генерируется автоматически, вы можете поместить новое свойство в частичный класс.
Примечание 2: В случае использования DataTable
вы можете просто создать столбец формулы, задав выражение для столбца.
Опция 2 - ЯчейкаФорматирование
Вы можете добавить несвязанный столбец и просто указать значение ячейки во время выполнения в CellFormatting
дажеЭлемент управления DataGridView
:
private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
var dgv = (DataGridView)sender;
if (e.RowIndex < 0 || e.RowIndex == dgv.NewRowIndex)
return;
if (e.ColumnIndex == 1 /*The column index which you want to format*/)
{
var book = dgv.Rows[e.RowIndex].DataBoundItem as Book;
if (book != null)
e.Value =
$"Title: {book.Title}\n" +
$"Author: {book.Author}\n" +
$"Copyright Date: {book.CopyrightDate}";
}
}
Вариант 3 - Использование события CellPaintig
для пользовательской ячейки рисования
Вы можете увидеть пример содержимого ячейки рисованияс различными шрифтами в этом посте: Как создать нижний колонтитул для ячейки в DataGridView .
Вариант 4 - Использование DataRepeater
Элемент управления
Вы можете использовать элемент управления DataRepeater
.
Блоки питания Visual Basic DataRepeater
можно прокручивать.Контейнер для элементов управления, которые отображают повторяющиеся данные, например, строки в таблице базы данных.Его можно использовать в качестве альтернативы элементу управления DataGridView
, когда вам нужно больше контроля над макетом данных.DataRepeater
«повторяет» группу связанных элементов управления, создавая несколько экземпляров в режиме прокрутки.Это позволяет пользователям просматривать несколько записей одновременно.