2017-01-11 8 views
0

Ich habe eine Winform-Anwendung vor 1 (oder 2) Jahr (en) entwickelt, basierend auf .NET Framework 4.5.Winform Anzeige Bug

Es gibt einige Benutzer, bei denen ein seltsamer Fehler auftritt, bei dem eine Kontrollgruppe nicht angezeigt wird. Es ist mir nie gelungen, den Fehler zu reproduzieren, um es zu beheben. Es tritt selten auf. Von ~ 200 Benutzern wird dieses Problem derzeit nur bei einem Benutzer festgestellt.

Hier ist, wie es sein sollte: notice the "Selected customer" UI control

Hier ist, wie es sich mit der Frage ist: The gridview overflows and only the checkbox "Show hidden customers" is visible

jemand irgendeinen Vorschlag Hat?

BEARBEITEN: Im ersten Screenshot sehen Sie das Gruppensteuerelement "Ausgewählter Kunde". Klickt der Benutzer in der Rasteransicht auf eine Zeile, wird dort der zugehörige Kunde angezeigt und kann auf die Schaltfläche "Diesen Kunden auswählen" klicken.

Auf dem zweiten Screenshot können Sie sehen, dass die Gridview bis zum Ende überläuft. Der Teil "ausgewählter Kunde" wird nicht angezeigt. (Aber die Checkbox „Alle Kunden“ wird weiterhin angezeigt)

Mit dieser Methode wird die die gridview lädt:

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; 
     } 
    } 

Und das ist der Code, der den unteren Teil angezeigt werden, wenn eine Zeile geklickt wird:

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: Neue Informationen aus dem vom Benutzer>, wenn die App im abgesicherten Modus läuft, alles in Ordnung ist ..

Danke,

Hellcat8

+1

Was ist das Problem? Kann nicht von den Screenshots erzählen. –

+0

Sorry, ich habe diesen Teil vergessen. Ich habe meinen Beitrag bearbeitet, danke. – Hellcat8

+1

Nur jemand, der sich den Quellcode ansieht, kann eine Lösung vorschlagen. – LarsTech

Antwort

0

Es klingt wie eine Wettlaufbedingung für mich. Ist die Anzeige des fehlenden Steuerelements davon abhängig, dass einige Daten in das Datengitter geladen werden? Wenn dies der Fall ist, könnten die Daten, die nicht geladen werden, dazu führen, dass das Laden der nachfolgenden Steuerung fehlschlägt.

Können Sie den Code posten, der das Formular lädt?

Möglicherweise können Sie async/await verwenden, um die abhängige Formularlogik erst auszuführen, wenn das DataGrid vollständig geladen wurde.

+0

Der fehlende Teil hängt davon ab, dass nichts angezeigt wird. Es ist nur ein Tisch auf einem Panel mit Etiketten. Wenn der Benutzer jedoch auf eine Zeile in der obigen Rasteransicht klickt, werden Daten aus der Gridview in die unsichtbaren Beschriftungen (Standardstatus) eingefügt. – Hellcat8