Schließen einer anderen Form abfangen

colt_s

Grünschnabel
Guten Morgen,

ich habe ein Problem und hoffe das mir jemand einen Tipp geben kann.

Ich programmiere in Visual Basic .Net eine kleine Anwendung.
Vom Hauptfenster aus wird durch ein Klick auf einen Menü-Eintrag ein weiteres Fenster zur Dateneingabe geöffnet.
Code:
    ' Menüleiste/Datei/Projekt öffnen
    Private Sub ÖffnenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ÖffnenToolStripMenuItem.Click, buttonProjektOeffnen_TS.Click

        ' Frame anzeigen um Projekt auszuwählen
        Dim projektOeffnenForm As New projektOeffnenForm
        projektOeffnenForm.ShowDialog()

    End Sub

Jetzt werden dort Daten eingegeben, welche dann aber wieder im Hauptprogramm verwendet werden sollen.
Ich könnte nun in dem Form Projekt die Daten ins Hauptprogramm schreiben, ist aber nicht so schön, wenn man diese Form anderweitig auch verwenden möchte. Darum will ich hier aus dem Hauptprogramm herraus über eine "Get-Funktion" diese Werte auslesen.
Dieses habe ich zwar mit einer Krücke realisieren können, indem das Hauptfenster wieder seinen Focus erhält, aber das ist nicht unbedingt der richtige Weg.

Code:
    Private Sub hauptfensterForm_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated


            ' Projektnamen auslesen
            projekt_name = projektdaten.getProjekt_name



    End Sub

Wie bekomme ich den Event "FormClosing" aufs projektOeffnenForm angewendet um aus dem Hauptprogramm beim schließen die Werte abfragen zu können?

Vielen Dank für eure Mühe!
 
Hi,

du kannst doch den FormClosing-Event der "projektOeffnenForm" auch in deinem Hauptprogramm abonnieren.

Gruß
MCoder
 
Hallo,

wenn du das Form schon mit ShowDialog() anzeigst, frag die Daten doch einfach nach der ShowDialog-Methode ab:
Visual Basic:
' Menüleiste/Datei/Projekt öffnen
Private Sub ÖffnenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ÖffnenToolStripMenuItem.Click, buttonProjektOeffnen_TS.Click

    ' Frame anzeigen um Projekt auszuwählen
    Dim projektOeffnenForm As New projektOeffnenForm
    Dim res as DialogResult = projektOeffnenForm.ShowDialog()
    If res = DialogResult.OK Then
        ' hier dann die Daten auslesen..
    End If
    
End Sub
So müsstest du dann aber in dem projektOeffnenForm beim Button-Klick wo die Eingaben bestätigt werden sollen (also das Form "geschlossen" und die Eingaben aus dem Haupt-Form abgefragt werden sollen), noch folgendes mit rein:
Visual Basic:
Me.DialogResult = DialogResult.OK
(beim Setzen des DialogResult eines Forms wird das dann schon geschlossen bzw versteckt, also danach nicht mehr Me.Close() machen!)

(habe Visual Basic noch nie gemacht, also könnte mein Code an manchen Stellen falsch sein, aber müsste doch eigentlich richtig sein ;) )

MfG
Fabsch
 
Danke für die Hinweise!

Das mit dem DialogResult klappt einwandfrei!
Einzig der Editor verlangt die Anweisung so zu schreiben:

Windows.Forms.DialogResult.OK
 
Oder du machst oben ein
Visual Basic:
Imports System.Windows.Forms
(auch hier bin ich mir nicht ganz sicher, ob der Code so stimmt, denn ich kann ja nicht so wirklich VB ;) )
rein, dann kannst du auch einfach nur DialogResult.OK schreiben!
 
Zurück