簡體   English   中英

在背景中填充組合框C#

[英]populate combobox c# in the background

我正在使用Windows FormsVisual Studio 2013做一個項目。

我有幾種形式( LogInMenyFakturaSokning (現在)

啟動程序時,打開“ LogIn ,登錄后進入Meny ,您可以在其中打開FakturaSokning

現在我有問題了。 我有2個名為comboBoxFaktNr1comboBoxFaktNr2 ,我試圖用從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表單時,如何在后台填充組合框,完成后如何自動更新組合框,或者在MenyLogIn表單中,如何進行更新?

如果我錯過了一些相關信息,請告訴我,我將盡快嘗試添加。

您可以嘗試使用在單獨的線程上執行操作的Backgroundworker。

后台工作者MSDN

這一直是問題所在。 同樣,當我嘗試更早使用它時,我遇到的問題是我試圖通過代碼手動制作和使用工人。 但是,如果我使用工具箱並從那里添加了一個工作程序,則一切正常。 這是我在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM