Events liefern Unterschied



  • Hallo zusammen!

    Ich habe eine Funktion ShowOverview() . In dieser binde ich beim Aufruf der Form meine Daten und lasse diese auch anzeigen - u.a. in einer DataGridView.
    Auf der Form befindet sich zudem ein TabControl welches zu Beginn nur eine Page anzeigt, d.h. manche Tabs sind zu Beginn ausgeblendet. Wenn ich von dort wieder auf mein Start-Tab kommen möchte, rufe ich erneut die Funktion ShowOverview() auf.

    Damit beim Anzeigen der Daten kein Datensatz markiert ist, rufe ich am Ende der ShowOverview() Funktion dgPositions.ClearSelection(); auf und "leere" auch eine Combobox ( cbCustomer.Text = ""; ).

    Nun habe ich das Problem, dass beim Aufruf der Funktion im Form_Load Event sowohl ClearSelection als auch Text = "" nicht ausgeführt wird. Es steht am Ende der Funktion, da

    Rufe ich die Funktion von einer TabPage per Buttonklick auf, wird kein Datensatz markiert und der Text geleert. Weshalb?? 😕
    Und vor allem - wie kann ich das Problem lösen??

    private void ShowOverview()
            {
                ShowPositions();
                ColorGridPositions();
    
                cbCustomer.SelectedIndexChanged -= cbCustomer_SelectedIndexChanged;
                ShowCustomer();
                cbCustomer.SelectedIndexChanged += cbCustomer_SelectedIndexChanged;
    
                cbCustomer.Text = "";
                dgPositions.ClearSelection();
            }
    


  • Kann es sein, daß dort eine Exception (z.B. in ShowCustomer) erzeugt wird, denn Form_Load fängt intern jede Exception?
    Benutze am besten den Debugger dazu.



  • In der Regel kommen in das Form-Load nur Initialisierungen. Zugriffe auf das GUI sollten frühestens im Form-Shown ausgeführt werden. Im Zweifel ist das Fenster-Handel im Load ja noch garnicht vorhanden.



  • Beim Aufruf der Form lasse ich gleichzeitig zwei (von sechs) TabPages anzeigen.
    Nun habe ich heraus gefunden, dass die TabPage, die ich als zweites wieder zum Anzeigen hinzufüge (Aufruf innerhalb meiner ShowOverview() , den "Focus" hat und dort mein dataGridView1.ClearSelection(); bzw. combobox1.Text = ""; ignoriert wird.

    tabControlOverview.TabPages.Clear();
    tabControlOverview.TabPages.Add(tabPageOverview);
    tabControlOverview.TabPages.Add(tabPagePositions);
    

    Gibt es noch eine andere Möglichkeit, wie ich die restlichen Pages ausblenden kann und zu Beginn nur diese beiden anzeigen lasse?
    Hab nun meine Funktion auch ins Form_Show Ereignis gepackt. Ändert aber nichts am Problem, ist aber nach deinem Hinweis vermutlich sinnvoller! 😉



  • Wobei beim Button_Click ja das selbe mit dem TabControl bzw. den TabPages durchgeführt wird und es da funktioniert.




Log in to reply