0

良い検索では何もないので、ここに質問があります。

SQL クエリを介して入力される datagridview を含むフォームがあります。日付列があります (「delay_in_hours」として保存され、行の BackColor を変更する対象を決定するために使用します。

問題は、フォームをロードする同じイベント (loadSql) がトリガーされた場合 (フォームを更新/更新するボタンのように) にのみ、フォームの初期ロード時に backColor が設定されないことです。

スニペットは次のとおりです。

public void loadSql(
  try
  {
  ...

    foreach (DataGridViewRow r in sqlDataGridView.Rows)
    {
        if (delay_in_hours >= Program._delay_warn3)
        {
            r.DefaultCellStyle.BackColor = Color.Red;
        }
        else if (delay_in_hours >= Program._delay_warn2)
        {
            r.DefaultCellStyle.BackColor = Color.Orange;
        }
        else if (delay_in_hours >= Program._delay_warn)
        {
            r.DefaultCellStyle.BackColor = Color.Yellow;
        }
    }

    sqlDataGridView.Refresh();
    sqlDataGridView.Update();
  }
  catch (Exception ex)
  {
    MessageBox.Show("loadsql Exception:" + ex.Message + " STACK: " + ex.StackTrace.ToString());
  }

バックカラーの「時計」が作れませんでした。ウォッチ アイテムを CellStyle の BackColor に設定しましたが、foreach を反復処理してもすべてのアイテム/値は変更されませんでしたが、foreach が完了すると、ウォッチ アイテムの値が変更されていないにもかかわらず、行の背景色が変わりました。

これの原因についてのアイデア、または backColor をデバッグして、ロード時に最初にフォームに色が設定されていない理由を特定するにはどうすればよいですか?

SK

4

1 に答える 1