0

すべてのセルを反復処理するコードがあります。各4x4セルを異なる色にする方法を教えてください。

これが私のコードです:

int c = ran.Next(1, 5);

for (int i = 0; i < box_width; i++)
{
    for (int j = 0; j < box_height; j++)
    {
        switch (c)
        {
            case 1:
                MyClass.grid.Rows[j].Cells[i].Style.BackColor = Color.Yellow;
                break;
            case 2:
                MyClass.grid.Rows[j].Cells[i].Style.BackColor = Color.LightGray;
                break;
            case 3:
                MyClass.grid.Rows[j].Cells[i].Style.BackColor = Color.LightBlue;
                break;
            case 4:
                MyClass.grid.Rows[j].Cells[i].Style.BackColor = Color.Blue;
                break;
        }
    }

}

このコードは、ランダムに選択された色ですべてのグリッドを塗りつぶします。異なる色のXxX次元に分割してほしい。

ありがとうございました

4

1 に答える 1

1
int c = ran.Next(1, 5);

for (int i = 0; i < box_width; i += 2)
{
    for (int j = 0; j < box_height; j += 2)
    {
        Color cellColor;

        switch (c)
        {
            case 1:
                cellColor = Color.Yellow;
                break;
            case 2:
                cellColor = Color.LightGray;
                break;
            case 3:
                cellColor = Color.LightBlue;
                break;
            case 4:
                cellColor = Color.Blue;
                break;
        }

        MyClass.grid.Rows[j].Cells[i].Style.BackColor = cellColor;
        MyClass.grid.Rows[j].Cells[i+1].Style.BackColor = cellColor;
        MyClass.grid.Rows[j+1].Cells[i].Style.BackColor = cellColor;
        MyClass.grid.Rows[j+1].Cells[i+1].Style.BackColor = cellColor;
    }
}

これは、box_widthとbox_heightがDataGridViewの行とセルの数と同じであることを前提としています。

それがあなたのために働くかどうか私に知らせてください、私はそれをテストしていませんが、それは私の頭の中で正しいように見えました。

ただし、セルが4x4の倍数でもない場合、これは例外をスローします。それらは常に4x4の倍数になると確信していますか?そうでない場合は、エラーチェックを追加する必要があります。

于 2012-03-15T22:00:13.750 に答える