2

非常に奇妙な例外があります。一部のデータにデータグリッドビューをバインドしています。データソースが空の場合、データを追加し、datagridview を更新して、追加した行を編集モードに設定しようとします。コードは次のとおりです。

foreach (DataGridViewRow row in dataGridViewActionTemplates.Rows)
{
    if (((GridActionTemplate)row.DataBoundItem).ID == actTemplate.Id)
    {
        dataGridViewActionTemplates.CurrentCell = row.Cells[dataGridViewActionTemplates.Columns.GetFirstColumn(DataGridViewElementStates.Visible).Index];
        dataGridViewActionTemplates.BeginEdit(false);
        break;
    }
 }

割り当てを実行しようとすると、「IndexOutOfRange」例外が発生し、「Index -1 には値がありません」と表示されます。割り当ての右側のインデックスがゼロよりも大きいため、非常に奇妙です。

私は助けに非常に感謝します

4

1 に答える 1

0

最終的に、Windows 7 で選択した Windows テーマに関連していることを発見した、いくぶん似たような奇妙さに遭遇したことを思い出します。当時、私のコードは Aero で例外なく正常に動作しましたが、Win 7 でクラシック テーマが有効になっている場合、またはコードは Windows 2003 で実行されました。あなたとまったく同じ状況ではなかったので、同じ問題かどうかはわかりませんが、それは考えられることの 1 つかもしれません。特定の問題は、2 つの異なるテーマで奇妙なことに同じ値を返さない列ヘッダーと行ヘッダーのインデックスに関連していました。そうは言っても、最初の実際のデータ フィールドではなく、無意識のうちに行ヘッダー フィールドを変更しようとしている可能性があります。

于 2013-10-06T20:26:16.040 に答える