1

プロパティを設定するためにすべてのフォームのコントロールを反復する必要があるため、アクティベーターを使用してフォームをインスタンス化する必要があります。この手順では、以下のコードを使用しています。

using (Form frm = (Form)Activator.CreateInstance(type))
                    {
                        using (SqlConnection cn = new SqlConnection(Program.connectionString))
                        {

                            cn.Open();
                            General.ProcessControls(cn, frm, frm.GetType().Name);
                            cn.Close();
                        }
                    }

ここまではすべて良い。上記のコードは、SuggestAppendモードでオートコンプリートモードが設定されたコンボボックスがあるフォームを除いて、すべてのフォームで魅力的なように実行されます。この形式では、オートコンプリートモードを設定しようとすると、アプリケーションがInvocationTargetExceptionで関数InitializeComponent()にクラッシュします。以下に、アプリケーションがクラッシュするコード行を示します。

 this.comboBoxAreaType.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
        this.comboBoxAreaType.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; 

この問題を解決する方法はありますか?

4

1 に答える 1

0

agent-jあなたのコメントは、何が悪いのかを理解するのに非常に役立ちました。

以下のコマンドを追加して、スレッドstart()を呼び出す直前にスレッドをSTA AppartmentStateに設定すると、チャームのように機能するようになります。

thread.SetApartmentState(ApartmentState.STA);
于 2012-05-26T17:52:20.923 に答える