[英]populate combobox c# in the background
我正在使用Windows Forms
在Visual Studio 2013
做一個項目。
我有幾種形式( LogIn
, Meny
, FakturaSokning
(現在)
啟動程序時,打開“ LogIn
,登錄后進入Meny
,您可以在其中打開FakturaSokning
。
現在我有問題了。 我有2個名為comboBoxFaktNr1
和comboBoxFaktNr2
,我試圖用從SQL Server獲得的FaktNr
填充它們。 我連接到服務器
MigrateDBFakturaEntities db = new MigrateDBFakturaEntities();
並獲得相關信息
var t = db.Fakturor.OrderBy(z => z.FaktNr).ToList();
我嘗試的第一件事是做一個foreach循環
foreach (var item in t)
{
comboBoxFaktNr1.Items.Add(item.FaktNr);
}
女巫工作,但問題是它停止響應,直到完成。
打開FakturaSokning
表單時,如何在后台填充組合框,完成后如何自動更新組合框,或者在Meny
或LogIn
表單中,如何進行更新?
如果我錯過了一些相關信息,請告訴我,我將盡快嘗試添加。
您可以嘗試使用在單獨的線程上執行操作的Backgroundworker。
這一直是問題所在。 同樣,當我嘗試更早使用它時,我遇到的問題是我試圖通過代碼手動制作和使用工人。 但是,如果我使用工具箱並從那里添加了一個工作程序,則一切正常。 這是我在DoWork中使用的代碼
BackgroundWorker worker = sender as BackgroundWorker;
List<Fakturor> t = db.Fakturor.OrderBy(z => z.FaktNr).ToList();
foreach (var item in t)
{
comboBoxFaktNr1.Invoke((Action)(() =>
{
comboBoxFaktNr1.Items.Add(item.FaktNr);
}));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.