2017-01-11 129 views
0

我基於.NET Framework 4.5在1(或2)年前開發了Winform應用程序。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

對不起,我忘了那部分。我編輯了我的帖子,謝謝。 – Hellcat8

+1

只有在查看源代碼的人可以爲此提出修復建議。 – LarsTech

回答

0

這聽起來像一個競爭條件給我。缺失控件的顯示是否依賴於正在數據網格中加載的一些數據?如果是這樣,未加載的數據可能導致後續控制加載失敗。

你能發佈加載表單的代碼嗎?

一旦DataGrid加載完成,您可以使用異步/等待來僅執行依賴窗體邏輯。

+0

缺少的部分取決於沒有顯示。這只是一張帶有標籤的面板上的桌子。但是,當用戶在上面的gridview中點擊一行時,它會將數據從gridview填充到下面的不可見標籤(默認狀態)。 – Hellcat8