[C#] Fenster anderer Klasse schließen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von ggo, 15. Dezember 2008 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 15. Dezember 2008
    Fenster anderer Klasse schließen

    Moin,

    ich habe folgendes Problem:

    Fenster 'Startmenü' erstellt Fenster 'NeuesSpiel' , dieses hat einen "Zurück" Button mit einem 'Abfragefester' (Alá: Wirklich zurück?). Dieses 'Abfragefenster' soll nun mittels Button das Fenster 'NeuesSpiel' schließen.

    Hoffe ihr versteht mich ^^

    Wie mache ich das am besten? Habe es schon mit Interfaces probiert, aber das klappt nicht ganz.

    PHP:
    namespace  M
    {

        interface 
    ISchließen
        
    {
             
    void Schließen ();
        }

        public 
    partial  class  Startmenu  Window  ISchließen
        
    {
            
    NeuesSpiel ns  = new  NeuesSpiel ();

            public 
    Startmenu ()
            {
                
    InitializeComponent ();
            }

            private 
    void button1_Click ( object sender RoutedEventArgs e )
            {
     
                
    ns . Show ();
            }

            private 
    void button3_Click ( object sender RoutedEventArgs e )
            {
                
    ns . Hide ();
            }

            private 
    void button2_Click ( object sender RoutedEventArgs e )
            {
                
    this . Close ();
            }

            
    void ISchließen . Schließen ()
            {
                
    ns . Hide ();
            }

        }
    }
    PHP:
    namespace  M
    {

        public 
    partial  class  NeuesSpiel  Window
        
    {

            public 
    NeuesSpiel ()
            {
                
    InitializeComponent ();
            }
          private 
    void button1_Click ( object sender RoutedEventArgs e )
            {
                
    Window Verwerfen  = new  Verwerfen ();
                
    Verwerfen . Show ();
            }
        }
    }
    PHP:
    namespace  M
    {
        public 
    partial  class  Verwerfen  Window  ISchließen
        
    {

            public 
    Verwerfen ()
            {
                
    InitializeComponent ();
            }

            private 
    void button1_Click ( object sender RoutedEventArgs e )
            {        
                
    // Declare an interface instance.
                
    ISchließen obj  = new  Startmenu ();

                
    // Call the member.
                
    obj . Schließen ();

                
    this . Close ();
            }

            
    #region ISchließen Member

            
    public  void Schließen ()
            {
                throw new 
    NotImplementedException ();
            }

            
    #endregion
        
    }
    }
     
  2. 15. Dezember 2008
    AW: Fenster anderer Klasse schließen

    Tut mir Leid, ich verstehe dich leider nicht.
    Vielleicht kannst du deinen Gedankengang nochmal ein wenig anderst formulieren - würde gerne helfen.
     
  3. 15. Dezember 2008
    AW: Fenster anderer Klasse schließen

    Hehe ^^

    Also, ich habe 3 Fenster!

    1. Startmenü -> dieses macht ein neues Fenster 'NeuesSpiel'
    2. NeuesSpiel -> dieses macht ein neues Fenster ''Verwerfen'

    Und 'Verwerfen' soll jetzt 'NeuesSpiel' schließen (Per Button).

    Ich habe es schon per Interface probiert, jedoch wird das Fenster nicht geschlossen.

    Im Code is das der Teil, aus 'Startmenu'

    Code:
     void ISchließen.Schließen() 
     { 
     ns.Hide(); 
     }
    Dieser wird über 'NeuesFenster' per Button aufgerufen

    Code:
     private void button1_Click(object sender, RoutedEventArgs e) 
     { 
     // Declare an interface instance. 
     ISchließen obj = new Startmenu(); 
    
     // Call the member. 
     obj.Schließen(); 
    
     this.Close(); 
     }

    Habe es auch mit ns.Close() versucht, passiert jedoch nichts. ich verstehe nicht warum, weil 'ns' ja bekannt ist und der Compiler auch nicht meckert.

    Ich habe auch schon in 'ISchließen.Schließen()' eine MessageBox eingebaut um zu wissen ob der Codeteil überhaupt erreicht wird, und er wird erreicht. Also passt iwie was nicht mit 'ns.hide()'.

    Was mich noch mehr verwundert ist, dass die Methode über 'ISchließen.Schließen()' wunderbar mit 'ns.Hide()' funktioniert.

    Hoffe ihr/du versteht mich jetzt besser
     
  4. 15. Dezember 2008
    AW: Fenster anderer Klasse schließen

    Übergib beim AUFRUF des Konstruktors von Verwerfen einfach die Instanz von NeuesSpiel.

    Code:
    NeuesSpielFormular parent;
    public Verwerfen(NeuesSpielFormular parent)
    {
     this.parent = parent;
     Initialize...();
    }
    
    // Dieser Konstruktor gehört immer dazu, soll aber nicht verwendet werden können (deshalb private):
    private Verwerfen()
    {
     Initialize...();
    }
    
    Und dann kannst du über deinen Button1 das "Parent"-Formular schließen:
    Code:
    private void button1_Click(object sender, RoutedEventArgs e)
    {
     parent.Close();
     parent = null; 
    } 
    
    Hilft das?

    Anmerkung: Verwende doch bitte "CODE"-Boxen. Weder php noch plain ist für solchen Code gedacht
     
  5. 16. Dezember 2008
    AW: Fenster anderer Klasse schließen

    Jaaaa, es geht
    Danke, du hast mir sehr geholfen.
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.