Winform显示错误

时间:2017-01-11 14:43:22

标签: c# winforms user-interface gridview datagridview

我基于.NET Framework 4.5在1年前(或2年前)开发了一个Winform应用程序。

有一些用户遇到了一个奇怪的错误,控制组没有出现。我从来没有成功复制这个bug来修复它。 它很少发生。在大约200个用户中,目前只有一个用户遇到此问题。

这是应该如何: notice the "Selected customer" UI control

以下是该问题的解决方法: The gridview overflows and only the checkbox "Show hidden customers" is visible

有人有任何建议吗?

编辑:在第一个屏幕截图中,您可以看到"选定的客户"集团控制。当用户点击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

1 个答案:

答案 0 :(得分:0)

这对我来说听起来像是一场竞赛。丢失控件的显示是否依赖于数据网格中加载的某些数据?如果是这样,未加载的数据可能导致后续控件的加载失败。

您可以发布加载表单的代码吗?

一旦DataGrid加载完毕,您就可以使用async / await来只执行依赖表单逻辑。