0

私はこの問題に2日から苦労しています。

私は htmlColor コードとして色を含む XML ファイルを持っています。私のプログラムには、hexCodes の値を表示している DataGridView があり、それをクリックして ColorDialog で色の値を変更し、セルの BackColor を選択した色を取得し、hexCode を新しい値として返します。

申し訳ありませんが、評判が 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());      
}
4

2 に答える 2

1

を設定した後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";
}

16 進値を正しく取得すれば、コードは適応可能であるはずです。

于 2014-10-24T10:54:22.083 に答える
0

したがって、問題は 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

于 2014-10-24T14:37:41.713 に答える