0

プロジェクトにデータグリッドコントロールがあり、コンボボックスコントロールに手動でデータを入力していますが、問題は、新しい行を追加するときにこの値を編集しようとすると、スレッド状態の例外が発生することです。

DataGridエラー

プログラムのエントリポイントメソッドはSTAThread属性で設定されていますが、コントロールを使用してフォームを呼び出すメソッドに属性を配置しましたが、まだ役に立ちません。誰かが私がこの問題を解決する方法を知っていますか?ありがとう。

4

1 に答える 1

1

プログラムのエントリ ポイント メソッドは、STAThread 属性で設定されます...

これは、アプリケーションのメイン スレッドにのみ適用されます。このダイアログ ボックスを表示する作成するスレッドにも注意する必要があります。例えば:

    Thread t = new Thread(new ThreadStart(ThreadProc));
    t.SetApartmentState(ApartmentState.STA);
    t.Start();

スレッドを直接作成しなかった場合は、コードを大幅に変更する必要があります。たとえば、Delegate.BeginInvoke() 呼び出しでダイアログ ボックスを表示している場合、スレッドはアプリケーションの既定のスレッド プールになります。そのスレッドの作成を制御できないため、STA スレッドとして作成することはできません。代わりに、上記のように独自のスレッドを作成して、ダイアログ ボックスを表示する必要があります。

于 2012-05-16T17:36:36.047 に答える