2017-01-11 2 views
0

Я разработал приложение Winform 1 (или 2) год назад, на основе .NET Framework 4.5.Ошибка отображения формы Winform

Есть несколько пользователей, которые испытывают странную ошибку, когда контрольная группа не появляется. Я никогда не преуспел в воспроизведении ошибки, чтобы исправить это. Это происходит редко. Из ~ 200 пользователей только одна из них в настоящее время испытывает эту проблему.

Вот как это должно быть: notice the "Selected customer" UI control

Вот как обстоит дело с вопросом: The gridview overflows and only the checkbox "Show hidden customers" is visible

ли кто-нибудь есть какие-либо предложения?

EDIT: на первом снимке экрана вы можете увидеть группу «Выбранный клиент». Когда пользователь щелкает по строке в 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

Это звучит как состояние гонки для меня. Является ли отображение отсутствующего элемента управления зависимым от некоторых данных, загружаемых в сетку данных? Если это так, данные, которые не загружаются, могут привести к сбою загрузки последующего элемента управления.

Не можете ли вы выслать код, который загружает форму?

Возможно, вы сможете использовать async/await только для выполнения зависимой логики формы после завершения загрузки DataGrid.

+0

Недостающая часть не зависит от того, что должно отображаться. Это всего лишь таблица на панели с надписями. Но когда пользователь щелкает по строке в gridview выше, он заполняет данные из gridview для невидимых меток (состояние по умолчанию) ниже. – Hellcat8

Смежные вопросы