我正在制作一个 Excel 验证程序。导入后,将验证每列是否为小数。
复选框是动态生成的,并使用以下代码表示每个选项卡的数据表中的列(选项卡是 Excel 文件中的工作表):
int dynamicHeight = 0;
int padding = 10;
CheckBox[] chk = new CheckBox[dt.Columns.Count];
for (int i = 0; i <= dt.Columns.Count - 1; i ++)
{
chk[i] = new CheckBox();
chk[i].Name = dt.Columns[i].ColumnName;
chk[i].Text = dt.Columns[i].ColumnName;
chk[i].AutoCheck = true;
chk[i].Bounds = new Rectangle(10, 20 + padding + dynamicHeight, 40, 22);
panelCol.Controls.Add(chk[i]);
dynamicHeight += 20;
panelCol.Size = new Size(120, dynamicHeight);
panelCol.Controls.Add(chk[i]);
chk[i].Location = new Point(0, dynamicHeight);
chk[i].Size = new Size(120, 21);
panelCol.BackColor = Color.White;
panelCol.AutoScroll = true;
//panelCol.AutoScrollMinSize = new Size (0, 1200);
}
我想打电话给他们,但也是动态的。我正在做的是手动预设每个复选框,如下所示:
chk[0].CheckedChanged += (s, e) =>
{
decimal num;
if (chk[0].Checked == true && chk[0].Name.Contains(dt.Columns[0].ColumnName))
{
//MessageBox.Show("HELLOW WORLD " + 0);
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (!Decimal.TryParse(dataGridView1.Rows[i].Cells["January"].Value.ToString(), out num))
{
if (dataGridView1.Rows[i].Cells[dt.Columns["January"].ColumnName].Value.ToString() == null || dataGridView1.Rows[i].Cells[dt.Columns["January"].ColumnName].Value.ToString() == "")
{
}
else
{
MessageBox.Show(dataGridView1.Rows[i].Cells["January"].Value.ToString() + " NOT A DECIMAL!");
}
}
else
{
}
}
}
};
是否有修复或解决方案,以便我不必手动预设它们?如果 excel 文件具有不同的列名,这意味着再次预设新列会怎样。
CheckBox[] chk = new CheckBox[dt.Columns.Count];
for (int i = 0; i <= dt.Columns.Count - 1; i ++)
{
chk[i] = new CheckBox();
chk[i].Name = dt.Columns[i].ColumnName;
chk[i].Text = dt.Columns[i].ColumnName;
chk[i].AutoCheck = true;
chk[i].Bounds = new Rectangle(10, 20 + padding + dynamicHeight, 40, 22);
panelCol.Controls.Add(chk[i]);
dynamicHeight += 20;
panelCol.Size = new Size(120, dynamicHeight);
panelCol.Controls.Add(chk[i]);
chk[i].Location = new Point(0, dynamicHeight);
chk[i].Size = new Size(120, 21);
panelCol.BackColor = Color.White;
panelCol.AutoScroll = true;
//panelCol.AutoScrollMinSize = new Size (0, 1200);
chk[i].CheckedChanged += (s, ev) =>
{
decimal num;
if (chk[i].Checked == true && chk[i].Name.Contains(dt.Columns[0].ColumnName))
{
//MessageBox.Show("HELLOW WORLD " + 0);
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (!Decimal.TryParse(dataGridView1.Rows[i].Cells[chk[i].Name].Value.ToString(), out num))
{
if (dataGridView1.Rows[i].Cells[dt.Columns[chk[i].Name].ColumnName].Value.ToString() == null || dataGridView1.Rows[i].Cells[dt.Columns[chk[i].Name].ColumnName].Value.ToString() == "")
{
}
else
{
MessageBox.Show(dataGridView1.Rows[i].Cells[chk[i].Name].Value.ToString() + " NOT A DECIMAL!");
}
}
else
{
}
}
}
};
}
这没有经过测试或任何东西,但它是您想要完成的基本概念。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句