C# Datagridview 方法 Rows.Add 工作不正确 - 它在前一个而不是最后添加行
C# Datagridview method Rows.Add works incorrectly - it add line on previous, not on last
我对 datagridview.Rows.Add 方法有疑问。我想添加一个新行,但在最后一行,而不是在前一行。我不知道为什么 Add 方法在这种情况下不起作用。我的代码:
dataGridView1.RowCount = 3;
dataGridView1.ColumnCount = 4;
dataGridView1.Rows[0].Cells[0].Value = 1;
dataGridView1.Rows[0].Cells[1].Value = 2;
dataGridView1.Rows[0].Cells[2].Value = 3;
dataGridView1.Rows[0].Cells[3].Value = 4;
dataGridView1.Rows[1].Cells[0].Value = 5;
dataGridView1.Rows[1].Cells[1].Value = 6;
dataGridView1.Rows[1].Cells[2].Value = 7;
dataGridView1.Rows[1].Cells[3].Value = 8;
dataGridView1.Rows[2].Cells[0].Value = 9;
dataGridView1.Rows[2].Cells[1].Value = 10;
dataGridView1.Rows[2].Cells[2].Value = 11;
dataGridView1.Rows[2].Cells[3].Value = 12;
dataGridView1.Rows.Add(13,14,15,16);
结果:
如果有任何帮助或建议,我将非常高兴!
这是在网格视图中插入线条的正确方法:
dataGridView1.Rows.Add(13,14,15,16);
最后一行*号其实是换行的占位符,最好不要直接插入
更好的办法是在输入新行时不设置 RowCount
。所以如果打开备用阅读。
在下面的示例中没有断言来验证 row.Cells[3].Value
是一个 int 但在第二个块中显示了如何正确检查。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.ColumnCount = 4;
for (int index = 0; index < dataGridView1.Columns.Count; index++)
{
dataGridView1.Columns[index].HeaderText = $"Column {index +1}";
}
dataGridView1.Rows.Add(1, 2, 3, 4);
}
private void button1_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows.Count == 1)
{
dataGridView1.Rows.Add(1, 2, 3, 4);
}
for (int index = 0; index < 4; index++)
{
var row = dataGridView1.Rows.Cast<DataGridViewRow>()
.LastOrDefault(gridRow => !gridRow.IsNewRow);
var lastValue = Convert.ToInt32(row.Cells[3].Value) + 1;
dataGridView1.Rows.Add(
lastValue,
lastValue += 1,
lastValue += 1,
lastValue += 1);
}
}
}
断言单元格值可以表示一个int
for (int index = 0; index < 4; index++)
{
var row = dataGridView1.Rows.Cast<DataGridViewRow>()
.LastOrDefault(gridRow => !gridRow.IsNewRow);
if (int.TryParse(row.Cells[3].Value.ToString(), out var lastValue))
{
lastValue += 1;
dataGridView1.Rows.Add(
lastValue,
lastValue += 1,
lastValue += 1,
lastValue += 1);
}
}
我对 datagridview.Rows.Add 方法有疑问。我想添加一个新行,但在最后一行,而不是在前一行。我不知道为什么 Add 方法在这种情况下不起作用。我的代码:
dataGridView1.RowCount = 3;
dataGridView1.ColumnCount = 4;
dataGridView1.Rows[0].Cells[0].Value = 1;
dataGridView1.Rows[0].Cells[1].Value = 2;
dataGridView1.Rows[0].Cells[2].Value = 3;
dataGridView1.Rows[0].Cells[3].Value = 4;
dataGridView1.Rows[1].Cells[0].Value = 5;
dataGridView1.Rows[1].Cells[1].Value = 6;
dataGridView1.Rows[1].Cells[2].Value = 7;
dataGridView1.Rows[1].Cells[3].Value = 8;
dataGridView1.Rows[2].Cells[0].Value = 9;
dataGridView1.Rows[2].Cells[1].Value = 10;
dataGridView1.Rows[2].Cells[2].Value = 11;
dataGridView1.Rows[2].Cells[3].Value = 12;
dataGridView1.Rows.Add(13,14,15,16);
结果:
如果有任何帮助或建议,我将非常高兴!
这是在网格视图中插入线条的正确方法:
dataGridView1.Rows.Add(13,14,15,16);
最后一行*号其实是换行的占位符,最好不要直接插入
更好的办法是在输入新行时不设置 RowCount
。所以如果打开备用阅读。
在下面的示例中没有断言来验证 row.Cells[3].Value
是一个 int 但在第二个块中显示了如何正确检查。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.ColumnCount = 4;
for (int index = 0; index < dataGridView1.Columns.Count; index++)
{
dataGridView1.Columns[index].HeaderText = $"Column {index +1}";
}
dataGridView1.Rows.Add(1, 2, 3, 4);
}
private void button1_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows.Count == 1)
{
dataGridView1.Rows.Add(1, 2, 3, 4);
}
for (int index = 0; index < 4; index++)
{
var row = dataGridView1.Rows.Cast<DataGridViewRow>()
.LastOrDefault(gridRow => !gridRow.IsNewRow);
var lastValue = Convert.ToInt32(row.Cells[3].Value) + 1;
dataGridView1.Rows.Add(
lastValue,
lastValue += 1,
lastValue += 1,
lastValue += 1);
}
}
}
断言单元格值可以表示一个int
for (int index = 0; index < 4; index++)
{
var row = dataGridView1.Rows.Cast<DataGridViewRow>()
.LastOrDefault(gridRow => !gridRow.IsNewRow);
if (int.TryParse(row.Cells[3].Value.ToString(), out var lastValue))
{
lastValue += 1;
dataGridView1.Rows.Add(
lastValue,
lastValue += 1,
lastValue += 1,
lastValue += 1);
}
}