2017-12-27 51 views
-2

現在、C#フォームのデータベースからのデータを表示および処理するプログラムで作業しています。プログラムの読み込み時に空のDataGridViewがあり、後でユーザーがToolStripMenuからアイテムを選択すると、データベースのデータが書き込まれます。私は各行、毎秒のセルの背景色を変更することができる必要があります。私はタイマーをインスタンス化し、それを1秒ごとにチェックするように設定しました。 Iは、以下に示す、タイマーティックごとに時間(秒ごとに)実行するメソッドイベントを設定している:Timer Tick C#フォームでのDataGridセルの背景色の変更

void _timer_0_Tick(object sender, EventArgs e) 
    { 

    } 

この方法で私は、各行の「ステータス」細胞を着色できるようにしたいと思いステータスが良好か悪いかに基づいて、DataGridを赤または緑のいずれかに設定します。ここで

は私がやりたいものを示す方法でいくつかの擬似コードです:

void _timer_0_Tick(object sender, EventArgs e) 
    { 
     bool isDataStable = //code to determine if stable on my end 
     if(isDataStable == true) 
     { 
      DataGrid.Row[Index].Column["Status"].BackColor = Green; 
     } 
     else 
     { 
      DataGrid.Row[Index].Column["Status"].BackColor = Red; 
     } 
    } 

私が見てきたすべてのDataGridViewの行/列の編集例はDataGridViewのに基づいて、イベントハンドラを使用する必要があり、どのようにすることができます私はリアルタイムでGridViewを編集中にタイマーを実装していますか?

おかげ

+0

インデックスから来るのでしょうか?それは何を表わすはずですか? – Plutonix

+1

1秒ごとに未定義の行数をチェックするタイマーは、悪い設計です。ユーザーが行の編集を終了した後にのみデータが変更されるため、データが有効であるかどうかをチェックしてステータスセルの色を付ける瞬間です。 – Gusman

+0

'DataGridView'クラスには' Rows'プロパティがあり、 'DataGridViewRow'には' Cells'プロパティがあり、 'DataGridViewCell'には' BackColor'プロパティを持つ 'Style'プロパティがあります。 – NetMage

答えて

1

あなたの擬似コードは近い - ちょうど適切なプロパティを使用します。

void _timer_0_Tick(object sender, EventArgs e) 
    { 
     bool isDataStable = //code to determine if stable on my end 
     if(isDataStable == true) 
     { 
      DataGrid.Rows[Index].Cells["Status"].Style.BackColor = Color.Green; 
     } 
     else 
     { 
      DataGrid.Rows[Index].Cells["Status"].Style.BackColor = Color.Red; 
     } 
    } 
関連する問題