16

私は datagridview を持っていますが、行番号が偶数か奇数かに応じて、各行の背景色を変更したいと考えています。

そこにたどり着くにはもっと簡単な方法があるに違いないと思いました。次に、たとえばコードのこの部分を使用して変更し、dtg の行の色を変更します。このコードのスニペットがそれを行う方法の1つである場合、rabgeの場合にインデックスがアウトになったときに例外がスローされないように、誰かがそれを改善するのを手伝ってくれますか?

public void bg_dtg()
    {
        try
        {

            for (int i = 0; i <= dataGridView1.Rows.Count ; i++)
            {
                if (IsOdd(i))
                {

                    dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.LightBlue;
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(""+ex);
        }
    }

   public static bool IsOdd(int value)
   {
       return value % 2 != 0;
   }

お時間とご回答ありがとうございます。

4

5 に答える 5

28

DataGridViewフォーム デザイナには、代替行ビュー スタイル オプションがあります。AlternatingRowsDefaultCellStyleプロパティ グリッドで

于 2013-08-19T10:15:55.650 に答える
6

存在しない行にアクセスしているため、例外が発生しています。GridView の行はゼロベースindexです。つまり、グリッドに 10 行ある場合、インデックスは 0 から 9 になり、行数より 1 つ少ない数を繰り返す必要がありますcounti <= dataGridView1.Rows.Countcount が 10 (合計行数は 10) で dataGridView1.Rows[10] が存在しない場合、例外がスローされるため、最後の反復で例外が発生します。

ループ条件の <= を < に変更

for (int i = 0; i <= dataGridView1.Rows.Count ; i++)

for (int i = 0; i < dataGridView1.Rows.Count ; i++)

AlternatingRowsDefaultCellStyleプロパティを使用して代替行スタイルを設定し、シンプルかつ効率的に保つ必要があります。

于 2013-08-19T10:12:57.437 に答える
5

このコードを試すことができます

 for (int i = 0; i < GridView1.Rows.Count; i++) {

     if (i % 2 == 0) {
       GridView1.Rows[i].Cells[0].Style.BackColor = System.Drawing.Color.Green;
       GridView1.Rows[i].Cells[1].Style.BackColor = System.Drawing.Color.Green;
     }
     else {
       GridView1.Rows[i].Cells[0].Style.BackColor = System.Drawing.Color.Red;
       GridView1.Rows[i].Cells[1].Style.BackColor = System.Drawing.Color.Red;
     }
}
于 2015-01-28T05:43:14.960 に答える