Fragen bzgl. Showdialog

DrMueller

Erfahrenes Mitglied
Hallo Leute, ich hoffe Ihr könnt mir helfen, denn irgendwie werd ich nicht schlau:
Also ich habe ein Allgemeines Fenster, von dem aus man andere Fenster öffnen kann.
In einem zweiten Fenster, welches also vom Ersten auferufen wird, kann ich noch einmal ein Fenster öffnen.
Der Ablauf ist also Hauptfenster --> Zweites Fenster --> Drittes Fenster.
Die beiden Fenster öffne ich mittels Showdialog und verarbeite diesen Wert.
Vom zweiten zum dritten Fenster kann man mittels Doppelklick auf einen Wert in einem Fenster oder mittels Button springen.
Jetzt kommt der Punkt:
Wenn ich Mittels Button arbeite, erscheint das dritte Fenster. Sobald ich dieses schliesse, schliesst sich das zweite Fenster, ich bin also wieder beim Hauptfenster.
Dies darf natürlich nicht sein, doch ich habe keine Ahnung wieso er beim zweiten Fenster auf einmal den showdialog vom zweiten abbricht, obwohl ich dort gar nichts mache.

Ich hoffe jemand hat verstanden was ich meine, da ich wirklich nicht kapiere, wieso dieses Showdialogresultat anscheinend global verwendet wird, obwohl ich die Forms natürlich einzeln gesettet habe.
 
Ich hab das gerade mal nachgebastelt und kann es nicht bestätigen. Zeig mal bissel Code, wie du z.B. die Form aufrufst und wie dein Schließen Code aussieht.
 
ok ich versuch mal so die DebugRoute nachzuzeichnen:

Funktion von Form1 auf Form 2

Private Sub AdressenToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AdressenToolStripMenuItem1.Click
If abgleichLaeuft = False Then
Dim f As KonfigurationAdressen
f = New KonfigurationAdressen
f.ShowDialog()
Else
MsgBox("Abgleich ist am laufen und daher sind keine Änderungen an der Schnittstelle möglich", MsgBoxStyle.Information, "Running")
End If
End Sub


Bearbeiten Button beim zweiten Form

Private Sub cmdBearbeitenAdCom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBearbeitenAdCom.Click
Call adComBearbeitenHandling()
End Sub


Private Sub adComBearbeitenHandling()
Dim fk As KonfigurationAdCom
Dim oldAdCom As ADVKonfigXML.adComTyp
If lstAdcomFelder.SelectedItems.Count > 0 Then
fk = New KonfigurationAdCom(lstAdcomFelder.SelectedItems(0).SubItems(1).Text, lstAdcomFelder.SelectedItems(0).Text)
oldAdCom = fk.adCom
If fk.ShowDialog = Windows.Forms.DialogResult.OK Then
konfig.removeAdcom(oldAdCom, XML_TAG_ADRESSEN, XML_TAG_ADCOM_ADRESSEN, XML_ATT_ADCOM_TYP)
konfig.updateAdcomListe(fk.adCom, XML_TAG_ADRESSEN, XML_TAG_ADCOM_ADRESSEN, XML_ATT_ADCOM_TYP)
konfig.saveXMLToFile()
updateAdComFelderListbox()
End If
Else
MsgBox("Bitte wählen Sie einen korrekten Datensatz aus.", MsgBoxStyle.Exclamation, "Kein Datensatz gefunden")
End If
End Sub


Tja das wars eigentlich schon.
Auf dem dritten Form kommt entweder

Me.DialogResult = Windows.Forms.DialogResult.Cancel

oder

Me.DialogResult = Windows.Forms.DialogResult.OK


Je nachdem wird beim AdcomHandling dann das alte Adcom gelöscht und das neue ins XML und in die Tabelle geschrieben oder eben nix passiert.

Jedenfalls nach dem Bearbeiten klicken springt er auf
AdressenToolStripMenuItem1_Click
und geht beim Showdialog weiter, als ob ich DIESES Fenster und nicht das dritte geschlossen hätte.
 
Mach den Code bitte das nächste mal in Codetags :) Ok also da ich nicht ganz schlau aus deinem Code werde, hast du mal genau im Debugger angeschaut was in dem Moment passiert wenn du das dritte Form schließt? So wie es aussieht wird das durch:

Me.DialogResult = Windows.Forms.DialogResult.Cancel
oder
Me.DialogResult = Windows.Forms.DialogResult.OK

eventuell ausgelöst, hast du vielleicht auf der zweiten Form eingestellt das er auf ein bestimmtes DialogResult warten soll?
 

Neue Beiträge

Zurück