2

Windowsフォーム内でdatagridviewを使用しており、グリッドをロードするためのデータソースプロパティを割り当てています。一部のセルの背景色を変更したい (列インデックス = 0 の場合) が、これを行ってフォームのサイズを変更すると、データグリッドがぼやけたり、セルが正しく表示されないという問題が発生します。これらの写真はそれをよりよく説明します。

サイズ変更前: ここに画像の説明を入力

リサイズ後: ここに画像の説明を入力

セルをフォーマットしようとしているコードは次のとおりです...

private void dg_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    // Clients color
    if (e.ColumnIndex == 0)
    {
        int currentClient = e.RowIndex % p.AllClients.Count;
        dg.Rows[e.RowIndex].Cells[0].Style.BackColor = Color.FromArgb(p.AllClients[currentClient].Color);              
     } 
}   

前もって感謝します!

4

1 に答える 1

1

問題は、行でさえ透明な背景色を持っていることです。これは、使用Color.FromArgb(int argb)していて、アルファチャネルを透明な低い値に設定しているため、OnBackgrounPaintサイズ変更時にセルの背景をクリアできないためです。次のように最後の行を変更します。

dg.Rows[e.RowIndex].Cells[0].Style.BackColor = p.AllClients[currentClient].Color;

ColorクライアントのプロパティがColorGDI+からではなく、32ビットの数値である場合は、次のように実行できます。

dg.Rows[e.RowIndex].Cells[0].Style.BackColor = Color.FromArgb(p.AllClients[currentClient].Color); 
Color newColor = dg.Rows[e.RowIndex].Cells[0].Style.BackColor;
dataGridView1.Rows[e.RowIndex].Cells[0].Style.BackColor = Color.FromArgb(255, newColor.R, newColor.G, newColor.B); //remove transparency from the color
于 2013-03-14T16:49:46.207 に答える