簡単な問題。DataTable を使用して設定した dataGridView があり、ボタンの DataTable の後に 2 つの列を追加します。インデックス 6 のボタンをクリックすると、最初のボタンであるインデックス 1 が表示されます。
DataTable cartResults = cart.RunCartQuery(sb.ToString());
dgCart.DataSource = cartResults;
// Add a button to the DataGridView at the specified position
DataGridViewButtonColumn btnEdit = new DataGridViewButtonColumn();
btnEdit.Name = "btnEdit";
btnEdit.Text = "Edit";
btnEdit.HeaderText = "Edit Quantity";
btnEdit.UseColumnTextForButtonValue = true;
dgCart.Columns.Insert((int)Buttons.Edit, btnEdit);
DataGridViewButtonColumn btnDelete = new DataGridViewButtonColumn();
btnDelete.Name = "btnDelete";
btnDelete.Text = "Delete";
btnDelete.HeaderText = "Delete";
btnDelete.UseColumnTextForButtonValue = true;
//dgCart.Columns.Insert((int)Buttons.Delete, btnDelete);
dgCart.Columns.Add(btnDelete);
返されるインデックスが 1 (編集ボタン) であり、インデックス 6 の [削除] ボタンではない理由がわかりません。何かアイデアはありますか?
問題の原因は、DataGridView.DataSource が DataTable であることです。データソースの設定後に 2 つのボタン列を追加します。インデックス 1 と 6 にボタンを追加しましたが、DatagridView はそれらがインデックス 0 と 1 にあると認識しています。フォーム上ではグリッドは問題なく見えますが。