2013-09-24 5 views
0

Возможно ли иметь изображение вместо текста в DataGridViewLinkColumn. В приведенном ниже примере вместо «поиска» текста у нас есть значок поиска в ячейке !?C# DataGridViewLinkColumn имеет значение ячейки как изображение вместо текста (изображение с возможностью клики/ссылки)

private void Form1_Load(object sender, EventArgs e) 
    { 
     DataGridViewLinkColumn c = new DataGridViewLinkColumn(); 
     dataGridView1.Columns.Add(c); 
     dataGridView1.Rows.Add(); 
     dataGridView1.Rows[0].Cells[0].Value = "search"; 
    } 

При попытке присвоения изображения на значение ячейки, он не получает отображается, а отображается как «System.Drawing.Bitmap»

+0

Почему не столбец изображения с событием click? –

+0

@Colin Steel: но при наведении указателя мыши курсор не отображается. В основном мне это нужно, чтобы пользователь понял, что при нажатии на него открывается что-то, и это не просто простая кнопка изображения. – AKN

ответ

1

Используйте стандартный DataGridViewImageColumn для отображения изображения, а затем создать DataGridView_CellMouseMove события для DataGridView со следующим кодом

private void DataGridView1_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e) 
    { 
     if (e.ColumnIndex == DataGridViewImageColumn1.Index) 
     { 
      Cursor = Cursors.Hand; 
     } 
     else 
     { 
      Cursor = Cursors.Default; 
     } 
    } 

добавить логику для определения строки, если это необходимо.

DataGridView_CellMouseClick События по-прежнему будут необходимы для ваших ссылок.

Возможно, вам также понадобится событие DataGridView_MouseLeave, чтобы установить Cursor по умолчанию.

+0

Это решение было трудно найти в Интернете и фактически в самой SO. Это действительно хорошо. – AKN