Laden...

Fenster schließen? (Aufruf beenden)?!

Erstellt von roithi vor 17 Jahren Letzter Beitrag vor 17 Jahren 6.749 Views
R
roithi Themenstarter:in
124 Beiträge seit 2007
vor 17 Jahren
Fenster schließen? (Aufruf beenden)?!

Hallo!

Hätte mal wieder eine Frage

Wenn ich aus meinem Haupftfenster einen Dialog öffne, und dann diesen Dialog schließe, ist er trotzdem noch aktiv, wird aber nicht mehr angezeigt.

wie kann man den Dialog komplett beenden.

meine hier dass...


private void button_edit_Click(object sender, EventArgs e)
{
            
            MyDialog md= new MyDialog(_os, false);    
                
            md.SetBounds(3, 354, panel1.Size.Width, panel1.Size.Height); 
            md.Show();  
            
}

In meinem Dialog mach ich dann this.dispose() Fenster ist dann zwar weg, aber die Funktionen und Events laufen immer noch weiter..

2.223 Beiträge seit 2005
vor 17 Jahren

Hallo roithi,

wei wäre es mit this.Close() ????

mfg

R
roithi Themenstarter:in
124 Beiträge seit 2007
vor 17 Jahren

ich will ja nicht mein komplettes Programm beenden sondern nur meinen Dialog... wenn ich im Dialog this.close machen ist der Dialog zwar verschwunden...aber die Eventhandler im Dialog arbeiten noch...

Also in meinem Beispiel müsste ich doch die Klasse

Mydialog irgendwie killen... aber weiß net wie

6.862 Beiträge seit 2003
vor 17 Jahren

Wenn du closed ist normal Ende. Verwendest du irgendwelche Threads in deinem Dialog die noch nicht beendet wurden? Wie kommst du denn zu der Annahme das Events noch weiterverarbeitet werden?

Baka wa shinanakya naoranai.

Mein XING Profil.

R
roithi Themenstarter:in
124 Beiträge seit 2007
vor 17 Jahren

Also..

Mein Dialog ist mehr oder weniger eine Detailansicht zu einer Row eines Datagrids des hauptfensters.

Bei einem RowEnter event wird einer Observerklasse der rowindex übergeben

Im Dialog hab ich einen Eventhandler, dieser wird aktiv sobald sich in der Observerklasse der rowindex ändert.


public MyDialog(ObserverClass os,bool newcorr)
        {
            
            InitializeComponent();
            
            _os = os;
                      
            _os.RowChanged += new EventHandler(_os_RowChanged);           
            
   }

Im Eventhandler habe ich eine Testausgabe drinnen.

Wenn ich jetz diesen Dialog schließe, wird zwar das Fenster geschlossen. Aber der Eventhandler ist noch aktiv.

Das heißt die Testausgaben in der Console kommen weiterhin, wenn im Hauptfenster ein RowEnter Event ausgelöst wird.

Somit ist der Dialog noch irgendwie aktiv.

Der Dialog wird geschlossen mit this.close, dispose hab ich auch schon probiert

S
1.047 Beiträge seit 2005
vor 17 Jahren

dann solltest du vorm schließen mal

_os.RowChanged -= new EventHandler(_os_RowChanged);  

aufrufen

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo roithi,

der Dialog ist tot! Den EventHast du ja an os gehängt. Natürlich wird der weitergefeuert, solange os lebt. Du kannst ihn aber in Form.Closed für den Dialog mit -= auch wieder abhängen.

herbivore

R
roithi Themenstarter:in
124 Beiträge seit 2007
vor 17 Jahren

ahhhhhhhh ja....vielen dank herbivore (wieder einmal)