DatGridView
新しい行を追加するがあります。すべての行の最初の列は、行の残りの部分が完了したかどうかを示す画像です。これを追跡するために、各行には、完了したフィールドの数をカウントするリストのようなオブジェクトが添付されており、十分なフィールドが完了している場合は画像を変更します。これは、ユーザーが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つの行を追加した後、3DataGridViewImageCells
つは行0、1、および2からのものであると予想します。ただし、それらはすべて行2からのものです。
まだそれぞれにRowCount
関連付けられているように見えますが、増分するとセルが変化します。しかし、これが当てはまる場合、GUIを介してどのように機能するのでしょうか。誰かアイデアはありますか?DataGridViewCell
RowCount