我有DatGridView
我要添加新行。每行的第一列是一个图像,表示该行的其余部分是否已完成。为了跟踪这一点,每一行都附有一个类似List的对象,它计算已完成字段的数量,然后在已经完成足够的字段时更改图像。当用户在GUI中添加行时,这与预期完全一样,但是当我尝试以编程方式添加新行时遇到问题。
创建新行时,第一列中的DataGridViewImageCell
会添加到跟踪已完成字段的自定义类中。
以下是添加新行的代码:
//initiate the new row
object[] buffer = new object[13];
buffer[0] = nullImage; //a blank image
for (int i = 1; i < buffer.Length; i++)
{
buffer[i] = String.Empty;
}
rowID = DataGridView1.Rows.Add(buffer);
以下是RowAdded
代码:
private void DataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
DataGridViewImageCell tmp = (DataGridViewImageCell)DataGridView1.Rows[DataGridView1.RowCount - 1].Cells[0];
DataGridView1ValidateFields.AddRow(tmp); //custom class to keep track of completed fields
}
自定义类包含DataGridViewImageCells
dgvic列表;这是它的'AddRow
方法:
private List<object> dgvic = new List<object>();
public void AddRow(DataGridViewImageCell p)
{
items.Add(new List<int>());//List of ints to keep track of completed fields
dgvic.Add(p);
}
当我进入调试器(以编程方式添加行)时,我可以看到每次添加新行时,DataGridViewImageCells
中存储的dgvic
都来自最近一行。例如,在添加3行之后,我希望3 DataGridViewImageCells
来自行0,1和2;但是所有这些都来自第2行。
我认为RowCount
仍然与每个DataGridViewCell
相关联,而RowCount
增加了单元格的变化。如果是这种情况,它是如何通过GUI工作的?有没有人有任何想法?
答案 0 :(得分:2)
更改您的AddedRows
事件,如下所示:
private void DataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
int index = e.RowIndex;
for (int i = 0; i < e.RowCount; i++)
{
DataGridViewImageCell tmp = (DataGridViewImageCell)DataGridView1.Rows[index].Cells[0];
DataGridView1ValidateFields.AddRow(tmp);
index++;
}
}