我基于.NET Framework 4.5在1年前(或2年前)开发了一个Winform应用程序。
有一些用户遇到了一个奇怪的错误,控制组没有出现。我从来没有成功复制这个bug来修复它。 它很少发生。在大约200个用户中,目前只有一个用户遇到此问题。
有人有任何建议吗?
编辑:在第一个屏幕截图中,您可以看到"选定的客户"集团控制。当用户点击gridview中的一行时,相关客户会显示在那里,并且可以点击"选择此客户"按钮。
在第二个屏幕截图中,您可以看到gridview溢出到底部。 "选定的客户"部分未显示。 (但是复选框"显示隐藏的客户"仍然显示)
这是加载gridview的方法:
private void SetUpCustomersGridView()
{
if (chkbx_showHiddenCustomers.Checked)
{
dgv_customer.DataSource = _mySqlCeEngine.GetAllCustomers();
}
else
{
dgv_customer.DataSource = _mySqlCeEngine.GetVisibleCustomers();
}
gv_customer.Columns[0].Caption = "ID";
gv_customer.Columns[1].Caption = "Name";
gv_customer.Columns[2].Caption = "Address";
gv_customer.Columns[3].Caption = "City";
gv_customer.Columns[4].Caption = "Zip Code";
gv_customer.Columns[5].Caption = "Country Code";
gv_customer.Columns[6].Caption = "Cluster";
gv_customer.Columns[7].Caption = "Magellan Party/Account/Site ID/Account Site ID";
gv_customer.BestFitColumns();
gv_customer.OptionsFilter.AllowFilterEditor = false;
gv_customer.OptionsView.ShowAutoFilterRow = true;
foreach (DevExpress.XtraGrid.Columns.GridColumn col in gv_customer.Columns)
{
col.OptionsFilter.AutoFilterCondition = DevExpress.XtraGrid.Columns.AutoFilterCondition.Contains;
}
}
这是在单击行时显示底部的代码:
private void gv_customer_RowClick(object sender, RowClickEventArgs e)
{
try
{
DataRowView selectedRow = GetCustomersGridSelectedRow();
if (selectedRow != null){ btn_selectCustomer.Enabled = true; }
lbl_valueCustomerID.Text = GetCustomerID(selectedRow);
lbl_valueCustomerName.Text = GetCustomerName(selectedRow);
lbl_valueCustomerAddress.Text = GetCustomerAddress(selectedRow);
lbl_valueCustomerCity.Text = GetCustomerCity(selectedRow);
lbl_valueCustomerZipCode.Text = GetCustomerZipCode(selectedRow);
lbl_valueCustomerCountry.Text = GetCustomerCountryCode(selectedRow);
}
catch{}
}
EDIT2:来自用户的新信息 - >在安全模式下运行应用程序时,一切都很好......
谢谢,
Hellcat8
答案 0 :(得分:0)
这对我来说听起来像是一场竞赛。丢失控件的显示是否依赖于数据网格中加载的某些数据?如果是这样,未加载的数据可能导致后续控件的加载失败。
您可以发布加载表单的代码吗?
一旦DataGrid加载完毕,您就可以使用async / await来只执行依赖表单逻辑。