2012-05-26 1 views
1

Мне нужно создать формы с помощью активатора, потому что мне нужно перебрать все элементы формы, чтобы установить свойство. Для этой процедуры я использую код ниже.Активатор Сбой в режиме автообновления с помощью combobox

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; 

Есть ли способ решить эту проблему?

+0

Какое внутреннее исключение является Исключением TargetInvocationException? –

+0

Какой поток работает 'Activator.CreateInstance'? Это основной поток пользовательского интерфейса? (Зеленый в окне Threads в Visual Studio). –

+0

A) Внутреннее исключение: «Текущий поток должен быть установлен в режим однопоточной квартиры (STA) до того, как вызовы OLE могут быть выполнены. Убедитесь, что на главной функции есть STAThreadAttribute, отмеченный на нем». B) Процедура, выполняющая все это задание, выполняется в отдельном потоке не в основном потоке пользовательского интерфейса. – Bilias7

ответ

0

agent-j Ваши комментарии были очень полезны, чтобы понять, что происходит не так.

Я добавляю команду ниже, чтобы установить мой поток в STA AppartmentState непосредственно перед вызовом thread start(), и теперь он работает как шарм.

thread.SetApartmentState(ApartmentState.STA); 
Смежные вопросы