как установить DataGridViewButtonCell BackColor с помощью htmlColor?

Я борюсь с этой проблемой уже 2 дня.

У меня есть файл XML, который содержит цвета как код htmlColor, в моей программе у меня есть DataGridView, который показывает мне значения в шестнадцатеричных кодах, и я могу щелкнуть по нему и изменить значение цвета с помощью ColorDialog, а затем установить ячейку BackColor на выбранный цвет и возвращает мне шестнадцатеричный код в качестве нового значения.

извините, я не могу выложить фото, так как у меня нет 10 репутации (я новичок)

что я хочу, так это то, что когда я открываю файл XML в своей программе, ячейки должны иметь BackColor того, что написано внутри ячейки.

Я пробовал это, но не работает :(

private void dgvColors_CellFormatting(object sender, 
                                      DataGridViewCellFormattingEventArgs e)
{
  Theme theme = new Theme();
  foreach (KeyValuePair<string, Color> colour in theme.Colors)
         dgvColors.Columns["colKey"].DefaultCellStyle.BackColor = 
                   ColorTranslator.FromHtml(colour.Value.ToString());      
}

person Khaled Khaled    schedule 24.10.2014    source источник


Ответы (2)


После того, как вы установили FlatStyle на Flat, вы можете изменить Backcolor для каждой ячейки. В стиле Normal вы видите только рамку шириной 1 пиксель вокруг Button.

Этот пример создает DataGridViewButtonCells и рисует эти ячейки после загрузки DGV:

for (int r = 0; r < DGV.Rows.Count; r++)
{
    DGV[4, r] = new DataGridViewButtonCell();
    ((DataGridViewButtonCell)DGV[4, r]).Style.BackColor = Color.OrangeRed;
    ((DataGridViewButtonCell)DGV[4, r]).FlatStyle = FlatStyle.Flat;   
    ((DataGridViewButtonCell)DGV[4, r]).Value = r + "RR";
}

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

person TaW    schedule 24.10.2014
comment
Это уже FlatStyle, проблема была с ColorTranslator ;) - person Khaled Khaled; 24.10.2014

Итак, проблема была с ColorTranslator(),

он хорошо работает с этой версией кода:

 private void dgvMenuColors_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
{ 
foreach (DataGridViewRow row in dgvMenuColors.Rows) 
{ 
row.DefaultCellStyle.BackColor = ColorTranslator.FromHtml(row.Cells[1].Value.ToString()); 
} 
} 

:D

person Khaled Khaled    schedule 24.10.2014