【发布时间】:2017-07-04 11:40:09
【问题描述】:
我有一个名为 frmEmployees 的员工的 form,我需要在其中加载几个 combo box 以及国家、类别、国籍等数据。
现在当用户点击打开 frmEmployees 时,窗口被卡住然后打开。我认为这是因为数据加载和初始化combo box。
现在!我想要的是,在单击按钮打开 frmEmployees 后,运行一个进度条,直到数据加载完成,然后打开表单。
public frmEmployee()
{
InitializeComponent();
con = new Connection();
LoadComboboxDS();
}
我也试过了
private void FrmEmployee_Load(object sender, EventArgs e)
{
LoadComboboxDS();
}
private void LoadComboboxDS()
{
//company
var _companies = con.Companies.Where(x => x.IsDeleted == false).ToList();
_companies.Insert(0,new data.Models.CompanyModels.Company { Address = new data.Models.Address(), Code = null, Name = "--Select--", BaseCurrency = new data.Models.Currency() });
cbCompany.DataSource = _companies;
cbCompany.DisplayMember = "Name";
cbCompany.ValueMember = "ID";
//gender
cbGender.DataSource = Enum.GetValues(typeof(Gender));
//merital status
cbMeritalStatus.DataSource = Enum.GetValues(typeof(MaritalStatus));
//citizenship
var _citizenships = con.Countries.Select(x => x.Citizenship).Distinct().ToList();
_citizenships.Insert(0, "--Select--");
cbCitizenship.DataSource = _citizenships;
cbCitizenship.DisplayMember = "Citizenship";
//nationality
var _nations = con.Countries.Select(x => x.Name).Distinct().ToList();
_nations.Insert(0, "--Select--");
cbNationality.DataSource = _nations;
cbNationality.DisplayMember = "Name";
//domicile
var _domiciles = con.Countries.Select(x => x.Name).Distinct().ToList();
_domiciles.Insert(0, "--Select--");
cbDomicile.DataSource = _domiciles;
cbDomicile.DisplayMember = "Name";
//cast category
var _casts = con.CastCategories.Select(x => new {x.ShortText, x.Description}).Distinct().ToList();
_casts.Insert(0, new { ShortText = "", Description = "--Select--" });
cbCategory.DataSource = _casts;
cbCategory.DisplayMember = "Description";
cbCategory.ValueMember = "ShortText";
//religion
cbReligion.DataSource = Enum.GetValues(typeof(Religion));
}
【问题讨论】:
-
您应该为进度条使用后台工作程序。更简单的方法是将光标图标更改为加载符号。
-
你能推荐任何示例代码吗?因为我尝试了一些但没有运气
-
@kurdy Backgroundworker 不适用于 UI 元素。 UI 控件需要在 UI 线程中加载。
-
没错@Harsh
-
你使用什么 ORM?
标签: c# winforms asynchronous combobox async-await