Мне нужно создать формы с помощью активатора, потому что мне нужно перебрать все элементы формы, чтобы установить свойство. Для этой процедуры я использую код ниже.Активатор Сбой в режиме автообновления с помощью 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;
Есть ли способ решить эту проблему?
Какое внутреннее исключение является Исключением TargetInvocationException? –
Какой поток работает 'Activator.CreateInstance'? Это основной поток пользовательского интерфейса? (Зеленый в окне Threads в Visual Studio). –
A) Внутреннее исключение: «Текущий поток должен быть установлен в режим однопоточной квартиры (STA) до того, как вызовы OLE могут быть выполнены. Убедитесь, что на главной функции есть STAThreadAttribute, отмеченный на нем». B) Процедура, выполняющая все это задание, выполняется в отдельном потоке не в основном потоке пользовательского интерфейса. – Bilias7