[英]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.