我有一个非常简单的一般编程问题,但我无法得到我正在寻找的结果。基本上,我有一个名为dataGridView3的DataGridView(2列),我希望用户能够输入他/她想要的字段,并根据这些字段创建一系列字符串。我的问题是,形成的字符串一次只能包含4个dataGridView元素,但是对于我当前的实现,它将每行放在第一个字符串中(参见示例)。
以下是我目前使用的代码。
for (int i = 0; i < dataGridView3.Rows.Count; i++)
{
if (i % 4 == 0)
{
newPA61String += "PA61";
for (int j = i; j < dataGridView3.Rows.Count - 1; j++)
{
newPA61String += " " + (dataGridView3.Rows[j].Cells[0].Value.ToString().PadLeft(5, leftPaddingChar))
+ " " + (dataGridView3.Rows[j].Cells[1].Value.ToString().PadRight(6, rightPaddingChar));
}
newPA61String = newPA61String.PadRight(56, rightPaddingChar);
newPA61String += "\r\n";
}
}
使用6行数据,此代码为我提供了输出:
PA61 00001 a 00002 b 00003 c 00004 d 00005 e 00006 f
PA61 00005 e 00006 f
我希望它看起来像这样;但是,我不能按照我想要的方式操纵它:
PA61 00001 a 00002 b 00003 c 00004 d
PA61 00005 e 00006 f
我的第一直觉就是在达到指定长度后截断第一个字符串,但是字符串是通过将所有内容放在由“\ r \ n”分割的一行上形成的,所以这样做会消除第一个4列。
我知道解决方案可能相当明显,但我现在有一天......
提前致谢,如果您需要任何其他信息,请询问。
答案 0 :(得分:1)
变化:
for (int j = i; j < dataGridView3.Rows.Count - 1; j++)
为:
for (int j = i; j < Math.Min(dataGridView3.Rows.Count, i + 4); j++)
您可以将Math.Min表达式移出循环。
虽然我发现while循环更清楚这种事情。
答案 1 :(得分:0)
迭代要插入的PA61项目数,而不是遍布行,然后计算行和列(或单元格)数字,如下所示:
for (int i = 0; i < pa61ItemsCount; i++)
{
int row = i / 4;
int cell = i % 4;
...
}