2017-07-22 89 views
-1

私は、クォータが入ったDataGridViewを持っています。DataGridViewのC#最小最大値

私は最小のクォータを見つけてそのフォントを赤で、最大のクォータは緑でフォントを色づけしたいと考えています。

ユーザーコントロールで透明な背景を持つカスタムのDataGridコンポーネントを描画しています。

+0

希望の仕事をしなかったことがありますか? Stackoverflowシステムがどのように動作するかをよりよく理解するための[よくある質問のしくみ](https://stackoverflow.com/help/asking)ガイドを見てください。答え。 –

答えて

0

"DataBindingComplete"イベントを使用できます。これはトリックを行います。

private void qoutaGrid_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
    { 
     int min = qoutaGrid.Rows.Cast<DataGridViewRow>().Min(r => Convert.ToInt32(r.Cells["MyProperty"].Value)); 
     int max = qoutaGrid.Rows.Cast<DataGridViewRow>().Max(r => Convert.ToInt32(r.Cells["MyProperty"].Value)); 

     for (int i = 0; i < qoutaGrid.Rows.Count; i++) 
     { 
      int value = Convert.ToInt32(qoutaGrid.Rows[i].Cells["MyProperty"].Value); 
      if (value == min) 
      { 
       qoutaGrid.Rows[i].DefaultCellStyle.ForeColor = Color.Red; 
      } 
      if (value == max) 
      { 
       qoutaGrid.Rows[i].DefaultCellStyle.ForeColor = Color.Green; 
      } 
     } 
    } 

あなたの希望する番号がMyPropertyに保存されているとします。バインドされたデータソースの最小値と最大値を取得できます。次に、DefaultCellStyleを使用してセルの前景色を設定するために、他の値をminおよびmaxと比較できます。

+0

MyPropertyという名前の列が見つかりません。 パラメータ名:columnName、それは6列と6行を持っています..私はすべての列と行と最小限のすべての列と行の最小値を見つけたいと思います。 –

+0

@MelaminBeratiこの「MyProperty」の単語は、私が列の本名を知らなかったので、一例にすぎません!!指定したクォータ列データの名前を使用する必要があります。 – aminexplo

+0

6つの列があり、次のように名前が付けられます。QUOTA1、QUOTA2、QUOTA3、QUOTA4、QUOTA5、QUOTA6 –