今天在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();
最終我使用第二種方式,解決了這個問題,因為我的主表單是在登陸表單中以執行緒的方式打開的(不以執行緒的方式打開新的表單的話,就不能關閉當前的表單了,),一開始沒有設定單執行緒單元模式,所以報了錯,以前也沒遇到過這樣的問題,花了一些時間終于解決了這個問題,記錄一下,以免忘記,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/1723.html
標籤:WinForm
上一篇:上位機開發經驗教訓總結
