WinForms DataGridView TextError仅在强制刷新后显示

时间:2014-05-29 17:55:05

标签: c# winforms datagridview

所以我有一个带有DataGridView的表单,它使用以下代码从DataTable获取数据(AlternativeMenu是Form,manager.Values是DataTable)。

public AlternativeMenu(Manager m)
{
   InitializeComponent();
   manager = m;
   dataView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
   dataView.AllowUserToAddRows = false;
   dataView.MultiSelect = false;
   dataView.DataSource = manager.Values;
   valueValidation();
}

valueValidation方法检查无效值并更改单元格错误文本和背景颜色。

public void valueValidation()
{
   foreach (DataGridViewColumn column in dataView.Columns)
   {
      foreach (DataGridViewRow row in dataView.Rows)
      {
         validateCell(row.Index, column.Index);
      }
   }
}

private void validateCell(int row, int column)
{
   if (!manager.validateValue(row, dataView.Columns[column].Name))
   {
      dataView.Rows[row].Cells[column].ErrorText = "placeholder error text";
      dataView.Rows[row].Cells[column].Style.BackColor = Color.Salmon;
   }
   else
   {
      dataView.Rows[row].Cells[column].ErrorText = "";
      dataView.Rows[row].Cells[column].Style.BackColor = Color.White;
   }
}

如果我按下按钮调用valueValidation()方法,则所有有错误的单元格都会标记不同的颜色和错误文本。但是我想在表单显示后立即发生这种情况。

2 个答案:

答案 0 :(得分:1)

我不认为DataGridView控件喜欢在构造函数中进行验证。尝试将方法调用转移到OnLoad方法:

protected override void OnLoad(EventArgs e) {
  base.OnLoad(e);
  valueValidation();
}

答案 1 :(得分:0)

尝试将valueValidation();移动到表单的Shown - 事件。​​

foreach循环下添加此内容:

dataView.Refresh();