1

6 列のグリッドを作成しましたが、すべて文字列型です。ユーザーが 6 列目をダブルクリックすると、新しいフォームが開き、選択したレコードの値が id、name 変数で返されます。

フォームを開いて値を取得していますが、次の行を実行すると

grdItemDetail.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = id;

フィールドを更新していないため、エラーが発生し、この列の値を更新する方法を閉じてください。完全なコードは次のとおりです。

private void grdItemDetail_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
        if (e.ColumnIndex == 6)
        {
            frmWarehouseList frmWarehouseList = new frmWarehouseList();
            frmWarehouseList.ShowDialog();
            string id = frmWarehouseList.SelectedWarehouseID;
            string name = frmWarehouseList.SelectedWarehouseName;
            //MessageBox.Show(grdItemDetail.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
            grdItemDetail.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = id;
        }
4

1 に答える 1

3

列インデックスはゼロベースであるため、6つの列がある場合、最高のインデックスは5です。

クイックフィックス:

if (e.ColumnIndex == 5)
{
  // etc
}
于 2012-05-06T13:42:39.547 に答える