繁体   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