今天在winform中設置了combox的模糊查詢功能的相關屬性之後, this.comboBoxPM.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; this.comboBoxPM.AutoComple ...
今天在winform中設置了combox的模糊查詢功能的相關屬性之後,
this.comboBoxPM.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; this.comboBoxPM.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
在運行時,報瞭如下錯誤
通過尋找相關資料,瞭解到了STA單元模式和COM對象,總的來說:winform中,很多控制項是COM對象,這樣的對象只能被sta模式中的線程所調用。
解決辦法有兩種:
第一種:在主方法上加上[STAThread]特性標簽
[STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new LogInForm()); }
第二種:將線程的單元狀態設置為單線程單元,thread.SetApartmentState(ApartmentState.STA);
Thread th = new Thread(()=> new Form1().ShowDialog()); th.SetApartmentState(ApartmentState.STA); th.Start();
最終我使用第二種方式,解決了這個問題,因為我的主窗體是在登陸窗體中以線程的方式打開的(不以線程的方式打開新的窗體的話,就不能關閉當前的窗體了。),一開始沒有設置單線程單元模式,所以報了錯,以前也沒遇到過這樣的問題,花了一些時間終於解決了這個問題,記錄一下,以免忘記。