Сначала определите некоторые свойства, используя DataGridView
Designer.
Выберите DataGridView
, в его списке свойств найдите DefaultCellStyle и откройте редактор.
Нам нужно установить SelectionForeColor
и SelectionBackColor
равными ForeColor
и BackColor
свойствам. Это предотвратит изменение цвета ячейки при выборе.
Здесь я устанавливаю Color.White
для BackGround
и Color.Black
для ForeGround
.
Измените его на что угодно, они просто должны быть одинаковыми для обеих пар .
Сразу после того, как вы установили DataSource
из DataGridView
(или вставили строки данных другим способом), измените ReadOnly и, если необходимо, Frozen свойства всех столбцов, кроме той, которая отображает изображения. Здесь я просто использую поле int
, установленное на индекс столбца.
Он также может быть получен путем проверки [Cell].ValueType
каждой колонки.
//Define which Column contains an Image
int ImageColumn = 2;
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
if (column.Index != ImageColumn)
{
column.Frozen = true;
column.ReadOnly = true;
}
}
Подписаться на события CellMouseEnter и CellMouseLeave .
Они используются для изменения курсора на классическую форму руки, когда указатель мыши входит в ячейку, содержащую изображение, и для сброса его к значению по умолчанию, когда он покидает его.
Здесь я подписываюсь на события в конструкторе формы, но вы также можете использовать обработчики событий, сгенерированные конструктором, через список событий элемента управления DataGridView
.
public form1()
{
InitializeComponent();
this.dataGridView1.CellMouseEnter += (s, e) =>
{ if (e.ColumnIndex == ImageColumn) dataGridView1.Cursor = Cursors.Hand; };
this.dataGridView1.CellMouseLeave += (s, e) =>
{ if (e.ColumnIndex == ImageColumn) dataGridView1.Cursor = Cursors.Default; };
}