我正在尝试制作Excel验证程序。该程序旨在导入.xls文件,导入时可以在1月到12月的列中检测非十进制值。
我想通过突出显示非十进制单元格来显示它们。
这是截图。 SCREENSHOT
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
DataGridViewTextBoxCell cell = dataGridView1[2, e.RowIndex] as DataGridViewTextBoxCell;
if (cell != null)
{
if (e.ColumnIndex == 4)
{
char[] chars = e.FormattedValue.ToString().ToCharArray();
foreach (char c in chars)
{
if (char.IsDigit(c) == false)
{
MessageBox.Show("You have to enter digits only");
e.Cancel = true;
break;
}
}
}
}
}
我在上面找到了这个代码但它只能在编辑和点击回车键时显示结果,然后显示一个消息框。我希望通过突出显示列中的非十进制单元格来导入它。
答案 0 :(得分:0)
public void Column_Validating(DataGridView dataGridView)
{
decimal num;
if (dataGridView.ColumnCount > 3)
{
for (int h = 4; h < dataGridView.ColumnCount; h++)
{
for (int i = 0; i < dataGridView.RowCount; i++)
{
if (!Decimal.TryParse(dataGridView[h, i].Value.ToString(), out num))
{
if (dataGridView[h, i].Value.ToString() == null || dataGridView[h, i].Value.ToString() == "") { }
else
{
MessageBox.Show("Row not decimal:" + " [ " + dataGridView[h, i].Value.ToString() + "] in column " + dataGridView.Columns[h].Name);
}
}
}
}
}
else
{
for (int h = 3; h < dataGridView.ColumnCount; h++)
{
for (int i = 0; i < dataGridView.RowCount; i++)
{
if (!Decimal.TryParse(dataGridView[h, i].Value.ToString(), out num))
{
if (dataGridView[h, i].Value.ToString() == null || dataGridView[h, i].Value.ToString() == "") { }
else
{
MessageBox.Show("KEK " + dataGridView[h, i].Value.ToString());
}
}
}
}
}
}
在不同的课程上制作我自己的方法。 这将验证1月至12月的列。