C# 激活器在组合框设置自动完成模式下崩溃
我需要使用activator实例化表单,因为我需要迭代所有表单的控件来设置属性。对于这个过程,我使用下面的代码C# 激活器在组合框设置自动完成模式下崩溃,c#,winforms,combobox,activator,C#,Winforms,Combobox,Activator,我需要使用activator实例化表单,因为我需要迭代所有表单的控件来设置属性。对于这个过程,我使用下面的代码 using (Form frm = (Form)Activator.CreateInstance(type)) { using (SqlConnection cn = new SqlConnection(Program.connectionString))
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模式下设置了一个带有自动完成模式的组合框之外。在这种形式下,当我的应用程序尝试设置自动完成模式时,调用TargetException将函数InitializeComponent()崩溃。下面是我的应用程序崩溃的代码行
this.comboBoxAreaType.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
this.comboBoxAreaType.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
有没有办法解决这个问题 agent-j你的评论对理解出了什么问题很有帮助 在调用thread start()之前,我添加了下面的命令将我的线程设置为STA AppartmentState,现在它就像一个符咒一样工作
thread.SetApartmentState(ApartmentState.STA);
TargetInvocationException的内部异常是什么?哪个线程正在运行
Activator.CreateInstance
?它是主UI线程吗?(Visual Studio的“线程”窗口中的绿色部分)。A)内部异常是“在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式。确保主函数上标记了STAThreadAttribute。”B)执行所有此作业的过程在单独的线程中运行,而不是在主UI线程中运行。