0

アプリケーションにデータグリッドビューがあります。datagridview には、データソースとしてデータテーブルがあります。

datagridview を埋めた後、列のプロパティ (幅、表示、読み取り専用) を設定する手順があります。

このプロセスは私の開発環境で機能します。ただし、本番環境では次のメッセージが表示されます。

SetCurrentCellAddressCore 関数への再入可能呼び出しになるため、操作は無効です。

Visible = False の時点で、問題を次のコードに絞り込みました。

        For i As Integer = 0 To D.Columns.Count - 1
            D.Columns(i).Width = 50
            D.Columns(i).DefaultCellStyle.Alignment=DataGridViewContentAlignment.MiddleLeft
            D.Columns(i).Visible = False
        Next

エラーは列 1 でのみ発生します。ただし、列 1 を非表示から除外すると、列 1 を読み取り専用に設定するとアプリケーションが失敗します。

datagridview セルが使用されているため、再入可能呼び出しエラーは無限ループが原因であることを理解しています。ただし、コードは dev で機能します。実稼働テストで開発データベースのコピーを使用しているため、問題はデータに関連していません。

列が非表示または読み取り専用にされたときに、再入可能呼び出しが発生する原因は何ですか?

4

1 に答える 1

0

私がすることは、データグリッドビューの各列をループする代わりに、ソースデータテーブルの列をループし、インデックスの代わりに列名を使用してソース列のデータグリッドビュー列を非表示にすることです。インデックスはシャッフルできます (プロパティをいじるとき)。名前は、変更しない限り同じままです。

私は以前に同様の障害に遭遇したことがあります。

于 2013-01-30T23:49:31.680 に答える