今天在winform中設置了combox的模糊查詢功能的相關屬性以後,this
this.comboBoxPM.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; this.comboBoxPM.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
在運行時,報了以下錯誤spa
經過尋找相關資料,瞭解到了STA單元模式和COM對象,總的來講:winform中,不少控件是COM對象,這樣的對象只能被sta模式中的線程所調用。
線程
解決辦法有兩種:code
第一種:在主方法上加上[STAThread]特性標籤orm
[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();
最終我使用第二種方式,解決了這個問題,由於個人主窗體是在登錄窗體中以線程的方式打開的(不以線程的方式打開新的窗體的話,就不能關閉當前的窗體了。),一開始沒有設置單線程單元模式,因此報了錯,之前也沒遇到過這樣的問題,花了一些時間終於解決了這個問題,記錄一下,以避免忘記。blog