2013-07-18 22 views
15

私はdataGridViewオブジェクトを持っています。ボタンをクリックして、セルの背景の色を変更したいと思います。これは私が現在DataGridviewセルの色を動的に変更する

foreach(DataGridViewRow row in dataGridView1.Rows) 
{ 
    foreach(DataGridViewColumn col in dataGridView1.Columns) 
    { 
      //row.Cells[col.Index].Style.BackColor = Color.Green; //doesn't work 
      //col.Cells[row.Index].Style.BackColor = Color.Green; //doesn't work 
     dataGridView1[col.Index, row.Index].Style.BackColor = Color.Green; //doesn't work 
    } 
} 

テーブルが重なるように、それ自体の上に再描画されるこれら三つの原因のALLと再サイズにしようとしたテーブルが混乱になっ持っているものです。セルをクリックすると、値は強調表示されたままで、背景色は変化しません。

Q:テーブルの存在後に個々のセルのバックカラーを変更するにはどうすればよいですか?

答えて

46

これは私のためにそれがここ

ワーキングiは数量フィールドでこれを行っています

dataGridView1.Rows[rowIndex].Cells[columnIndex].Style.BackColor = Color.Red; 
+1

追加します。最後に – szakwani

+0

親愛なるエッサン、それは私のために働くヒントありがとう。 – t4thilina

+0

@ t4thilina、うれしかったよ。乾杯:) – Ehsan

0

おかげで動作しますゼロが、それは、細胞が実装

 int count = 0; 

     foreach (DataGridViewRow row in ItemDg.Rows) 
     { 
      int qtyEntered = Convert.ToInt16(row.Cells[1].Value); 
      if (qtyEntered <= 0) 
      { 
       ItemDg[0, count].Style.BackColor = Color.Red;//to color the row 
       ItemDg[1, count].Style.BackColor = Color.Red; 

       ItemDg[0, count].ReadOnly = true;//qty should not be enter for 0 inventory      
      } 
      ItemDg[0, count].Value = "0";//assign a default value to quantity enter 
      count++; 
     } 

    } 
2

赤色であることを示す意味していますDataGridViewTextBoxCellを独自に拡張し、次のようにPaintメソッドをオーバーライドします。

あなたのクラスのインスタンスへその後コードであなたの列のCellTemplateプロパティを設定し

}

columns.Add(new DataGridViewTextBoxColumn() {CellTemplate = new MyDataGridViewTextBoxCell()}); 
+0

笑、私は 'warning'と 'ok'のための最良の色を先に選択していましたが、最後に 'warning'には 'Color.OrangeRed'を選択しましたが、' OK 'には 'Color.SpringGreen'を選択しました。 – n00dles

関連する問題