所以我有一个带有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()
方法,则所有有错误的单元格都会标记不同的颜色和错误文本。但是我想在表单显示后立即发生这种情况。
答案 0 :(得分:1)
我不认为DataGridView控件喜欢在构造函数中进行验证。尝试将方法调用转移到OnLoad方法:
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
valueValidation();
}
答案 1 :(得分:0)
尝试将valueValidation();
移动到表单的Shown
- 事件。
在foreach
循环下添加此内容:
dataView.Refresh();