2015-09-10 4 views
0

Я использую DataGridView в WinForms. Можно ли добавить фоновое изображение в верхний левый заголовок DataGridView? В верхнем левом заголовке я имею в виду заголовок, который по умолчанию выбирает всю таблицу, если щелкнуть.Можно ли добавить фоновое изображение в верхний левый заголовок dataGridView?

Я заметил, что dataGridView.TopLeftHeaderCell.Style существует, и он имеет свойство для цвета фона, но не для фонового изображения.

Я также попытался изменить его, используя свойство графики, как показано ниже:

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) 
    { 
     if (e.RowIndex==0 && e.ColumnIndex==0) 
     { 
      e.Graphics.DrawImage(myImage, e.CellBounds); 
      e.Handled = true; 
     } 
    } 

К сожалению, rowIndex == 0 && columnIndex == 0 не представляет верхнюю ячейку влево заголовка, а верхняя левая регулярная ячейки.

+0

.NET является очень гибким и практически все, что может быть сделано. Проблема обычно не в том, что можно сделать что-то, но за что и действительно ли это достойно. Вы можете изменять внешний вид и функциональные возможности любого (по умолчанию) управления столько, сколько хотите. С другой стороны, большинство людей в SO не хотят доставлять коды, полностью отвечающие ожиданиям искателя. Можете ли вы показать нам, что вы пробовали до сих пор? – varocarbas

+0

@varocarbas извините, см. Правки – Gevo12321

+1

Возможный дубликат http://stackoverflow.com/q/22560105/3279496 – nelek

ответ

1

Проблема, с которой я столкнулся, имела в виду верхнюю левую ячейку заголовка becuase row 0 column 0 ссылается на верхнюю левую ячейку, а не ячейку заголовка.

Это можно сделать, указав индекс строки и столбца ниже 0. См. Код ниже.

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) 
    { 
     if (e.RowIndex<0 && e.ColumnIndex<0) 
     { 
      e.Graphics.DrawImage(myImage, e.CellBounds); 
      e.Handled = true; 
     } 
    } 
2

Вы можете использовать DataGridView «S Paint событие рисовать на DataGridView:

private void dataGridView1_Paint(object sender, PaintEventArgs e) 
{ 
    e.Graphics.DrawIcon(System.Drawing.SystemIcons.Exclamation, 
         new Rectangle(0, 0, 16, 16)); 
} 

Это пример использования значка. Вы также можете использовать e.Graphics.DrawImage.

Но вам нужно будет отрегулировать размер изображения, чтобы покрыть область, в которой вы хотите, чтобы фоновое изображение было закрыто.

0

Ну, это кажется немного ОТ, но я хотел бы упомянуть о редактировании вашего сообщения.

К сожалению, RowIndex == 0 & & ColumnIndex == 0 не представляет верхнюю левую ячейку заголовка, а скорее верхний левый регулярный элемент.

Пожалуйста, попробуйте следующее:

Смежные вопросы