0

フォームが追加されたコンソールアプリケーションがあります。

このフォームには、すべてのプロパティがデフォルトのままになっているデータグリッドビューがあります。

Program.csでは、Mainメソッドに次のコードがあります。

CompanyActions objCompanyActions = new CompanyActions();

List<Company> analyzedData = new List<Company>();

List<Company> CompaniesFromExternalSource = objCompanyActions.GetExternalCompanyData(@"company.csv");

analyzedData =  objCompanyActions.Compare(CompaniesFromExternalSource);
AnalysisForm objAnalysisForm = new AnalysisForm();

objAnalysisForm.ShowAnalysisData(analyzedData);
Application.Run(objAnalysisForm);

私はこのコードを持っている形で:

public void ShowAnalysisData(List<Company> analysisData)
{
     analysisGridView.DataSource = analysisData;

     UpdateGridStyle();

}

  private void UpdateGridStyle()
    {
        foreach (DataGridViewRow row in analysisGridView.Rows)
        {
            string RowType = row.Cells[0].Value.ToString();

            if (RowType == "Insert")
            {
                row.DefaultCellStyle.BackColor = Color.Green;
              //  row.DefaultCellStyle.ForeColor = Color.Black;
            }
            else if (RowType == "Update")
            {
                row.DefaultCellStyle.BackColor = Color.Yellow;
               // row.DefaultCellStyle.ForeColor = Color.Black;
            }
            else
            {
                row.DefaultCellStyle.BackColor = Color.Gray;
              //  row.DefaultCellStyle.ForeColor = Color.Black;
            }
        }

これは機能しません。グリッドは、各行のデフォルトの白い背景を保持しますか?私はここで何を間違っているのですか?

よろしく。

4

1 に答える 1

0

間違ったタイミングで背景色を変更するメソッドを呼び出していると思います。次のようにCellFormattingに配置してみてください。

private void analysisGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    DataGridViewRow row = analysisGridView.Rows[e.RowIndex];
    string RowType = row.Cells[0].Value.ToString();

    if (RowType == "Insert")
    {
        row.DefaultCellStyle.BackColor = Color.Green;
        //  row.DefaultCellStyle.ForeColor = Color.Black;
    }
    else if (RowType == "Update")
    {
        row.DefaultCellStyle.BackColor = Color.Yellow;
        // row.DefaultCellStyle.ForeColor = Color.Black;
    }
        else
    {
        row.DefaultCellStyle.BackColor = Color.Gray;
        //  row.DefaultCellStyle.ForeColor = Color.Black;
    }
}
于 2013-03-19T10:36:53.437 に答える