Laden...

UserControl mit Fenstern: Beim Schliessen werden alle Fenster (inklusive UserControl) geschlossen

Erstellt von sh33p vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.330 Views
S
sh33p Themenstarter:in
32 Beiträge seit 2011
vor 8 Jahren
UserControl mit Fenstern: Beim Schliessen werden alle Fenster (inklusive UserControl) geschlossen

Guten Morgen,

in meiner Applikation starte ich ein UserControl, welches in einem Fenster hereingeladen wird. Innerhalb dieses UserControls kann man mehrere Fenster öffnen. Beim Schließen dieser
Fenster wird das Fenster mit dem UserControl mitgeschlossen, obwohl nur das eine Fenster geschlossen werden soll.

Die Fenster werden ganz einfach über this.Close() geschlossen.

Vielen Dank

1.040 Beiträge seit 2007
vor 8 Jahren

Was meinst du mit:

in meiner Applikation starte ich ein UserControl

?(

Ein bissel (relevanter) Code wäre nicht schlecht.

S
sh33p Themenstarter:in
32 Beiträge seit 2011
vor 8 Jahren

Window mit dem UserControl: In dem Fenster WindowRechnungenAnzeigen wird nur ein UserControl in einer Groupbox angezeigt. Innerhalb von diesem UserControl gibt es mehrere Elemente, wo man
unter anderem ein weiteres Fenster öffnen kann.

Code aus WindowRechnungenAnzeigen:


  public void LadeUserControlRechnungen(List<Rechnung> rechnungen,Abrechnung abrechnung)
        {
            UserControlRechnungen userControl = new UserControlRechnungen(rechnungen, abrechnung, bfs);
            gBoxUserControl.Content = userControl;
        }


Code im UserControl zum Öffnen des Fensters WindowStatusAendern


    private void Status_Click(object sender, RoutedEventArgs e)
        {
            
                WindowStatusAendern windowStatus = new              WindowStatusAendern(tbBearbeitungsstatus.Text);
                windowStatus.ShowDialog();


        }


Nun öffnet sich das Fenster WindowStatusAendern. Dort gibt es einen Button Abbrechen. Drückt man diesen, schließt sich korrekterweise das WindowStatusAendern, aber auch das UserControlRechnungen innerhalb des Fenster WindowRechnungenAnzeigen.

Hier die Methode zum Schließen von WindowStatusAendern:


        void AbbrechenClick(object sender, RoutedEventArgs e)
        {
   
                this.Close();

          }


1.040 Beiträge seit 2007
vor 8 Jahren

Schließt sich das ganze Hauptfenster oder ist "nur" das UserControlRechnungen weg?

S
sh33p Themenstarter:in
32 Beiträge seit 2011
vor 8 Jahren

Es schließt sich das ganze "Hauptfenster" mit dem UserControl

1.040 Beiträge seit 2007
vor 8 Jahren

Kann das Problem nicht nachvollziehen.

Wie wird dein Hauptfenster geöffnet/gestartet?

S
sh33p Themenstarter:in
32 Beiträge seit 2011
vor 8 Jahren

Über .ShowDialog()

1.040 Beiträge seit 2007
vor 8 Jahren

Ohne weiteren Code habe ich leider keine Idee. Ich kann den Fehler nicht reproduzieren...

S
sh33p Themenstarter:in
32 Beiträge seit 2011
vor 8 Jahren

Ist glaube ich einfach zu viel Code für das Forum ^^

Danke trotzdem für deine Hilfe

3.170 Beiträge seit 2006
vor 8 Jahren

Hallo,

ich glaube das grundsätzliche Problem ist woanders begraben. Überprüfe mal, was in Deinem Code passiert nachdem Du das Dialogfenster geschlossen hast... Irgendwas muss ja da das Schließen des Hauptfensters verursachen.
Vielleicht stürzt Dein Programm auch einfach ab, hast Du irgendwo z.B. try-catch-Blöcke wo eine Exception verschluckt wird oder sowas?

Bei der Fehleranalyse kann Dir wahrscheinlich auch [Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden helfen.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

S
93 Beiträge seit 2008
vor 8 Jahren

Also, so wie ich das sehe, sprechen wir über Usercontrols, die im Hauptfenster geöffnet werden. Also keine eigenen Fenster.
Wenn dies der Fall ist, dann dürfte der Close()-Befehl hier falsch sein, denn der schließt ja die Form.
Also entweder statt der Usersteuerelemente Fenster (Forms) erstellen, und die dann wieder mit Close() schließen, oder wenn Dir das nicht möglich ist, die Usersteurelemente direkt auf die Form ziehen (und nicht jedesmal neu erzeugen) und dann nur immer sichtbar und unsichtbar machen.

1.040 Beiträge seit 2007
vor 8 Jahren

@san-software:
Nein, wir sprechen hier schon über Fenster. In einem UserControl kann man auch gar nicht den Close()-Befehl verwenden.

S
93 Beiträge seit 2008
vor 8 Jahren

Er spricht aber vom Close()-Befehl.
Und so wie er es beschreibt, möchte er wohl Usercontrols damit schließen.

1.040 Beiträge seit 2007
vor 8 Jahren

Er spricht aber vom Close()-Befehl.
Und so wie er es beschreibt, möchte er wohl Usercontrols damit schließen.

Ja, spricht er. Aber in UserControls gibt es keinen Close()-Befehl, den gibt es nur im Window, und die verwendet er auch. Siehe sein Code etwas weiter oben.

S
93 Beiträge seit 2008
vor 8 Jahren

Und so wie ich das verstanden habe, möchte er eben nur das Usersteuerelement "schliessen".

Aber ich denke, die Diskussion darüber ist wohl illusorisch 😃