2016-10-27 3 views
1

Я искал высший и низкий ответы на этот вопрос. Ответ на этот пост: Change Color of Button in DataGridView Cell не отвечает на мой вопрос, так как он касается шрифта.Изменить цвет кнопки в DataGridViewButtonColumn

Я попытался следующие:

DataGridViewRow r = dataGridView.Rows[0]; 
r.Cells[1].Style.BackColor = Color.Red; 

Я также попытался:

DataGridViewButtonColumn btnCOl = new DataGridViewButtonColumn(); 
btnCOl.FlatStyle = FlatStyle.Popup; 
DataGridViewRow r = dataGridView.Rows[0]; 
r.Cells[1].Style = new DataGridViewCellStyle { BackColor = Color.LightBlue }; 

еще безрезультатно.

Я также прокомментировал эту строку:

// Application.EnableVisualStyles(); 

Если есть кто-то, кто знает, как изменить цвет фона одной кнопки в DataGridViewButtonColumn, пожалуйста, помогите.

EDIT: Я хочу установить разные цвета для ячеек в столбце, например. некоторые будут красными, а другие будут зелеными. Я не хочу устанавливать цвет для всего столбца.

+0

вы можете просто использовать btnCOl.Style.BackColor = цвет.Светло-синий; – Prashanth

ответ

0

Try This

DataGridViewButtonCell bc = new DataGridViewButtonCell(); 
bc.FlatStyle = FlatStyle.Flat; 
bc.Style.BackColor = Color.AliceBlue; 

Вы можете чем назначить эту ячейку нужной строке

Вот небольшой пример с DataGridView dgvSample Уже вставлена ​​в форме

for (int i = 0; i <= 10; i++) 
{ 
    DataGridViewRow fr = new DataGridViewRow(); 
    fr.CreateCells(dgvSample); 

    DataGridViewButtonCell bc = new DataGridViewButtonCell(); 
    bc.FlatStyle = FlatStyle.Flat; 

    if (i % 2 == 0) 
    { 
     bc.Style.BackColor = Color.Red; 
    } 
    else 
    { 
     bc.Style.BackColor = Color.Green; 
    } 

    fr.Cells[0] = bc; 
    dgvSample.Rows.Add(fr); 
} 
3

Изменение BackColor всей колонны

В качестве опции можно установить FlatStyle свойство DataGridViewButtonColumn в Flat и установить его Style.BackColor в цвет, который вы хотите:

var C1 = new DataGridViewButtonColumn() { Name = "C1" }; 
C1.FlatStyle = FlatStyle.Flat; 
C1.DefaultCellStyle.BackColor = Color.Red; 

Изменение BackColor из a Отдельная ячейка

Если вы хотите установить разные цвета для различных клеток, после установки FlatStyle столбца или ячейки в Flat, достаточно установить Style.BackColor различных клеток разных цветов:

var cell = ((DataGridViewButtonCell)dataGridView1.Rows[1].Cells[0]); 
cell.FlatStyle = FlatStyle.Flat; 
dataGridView1.Rows[1].Cells[0].Style.BackColor = Color.Green; 

Если вы хотите изменить обратно цвет ячейки условно, вы можете сделать это в a CellFormatting событие, основанное на значении ячейки.

Примечание

Если вы предпочитаете стандартный внешний вид и ощущение Button вместо плоского стиля, вы можете обрабатывать CellPaint событие:

void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) 
{ 
    if (e.RowIndex < 0 || e.ColumnIndex < 0) 
     return; 
    if (e.ColumnIndex == 0) // Also you can check for specific row by e.RowIndex 
    { 
     e.Paint(e.CellBounds, DataGridViewPaintParts.All 
      & ~(DataGridViewPaintParts.ContentForeground)); 
     var r = e.CellBounds; 
     r.Inflate(-4, -4); 
     e.Graphics.FillRectangle(Brushes.Red, r); 
     e.Paint(e.CellBounds, DataGridViewPaintParts.ContentForeground); 
     e.Handled = true; 
    } 
} 
+0

Aghael, я только хочу установить цвета для разных ячеек в столбце, а не весь столбец – Munashe

+0

Если вы хотите установить разные цвета для разных ячеек, после установки 'FlatStyle' из' Column' в 'Flat', достаточно установить' Style.BackColor' разных ячеек для разных цветов. –

+0

Обязательно прочитайте последний раздел кода, он позволяет вам использовать стандартный внешний вид кнопки вместо плоского стиля. Также имейте в виду, что использование события «CellFormatting» намного лучше, чем цикл for. –

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