dtomgr Δημοσ. 12 Μαρτίου 2005 Δημοσ. 12 Μαρτίου 2005 Pws ri8mizw to project moy etsi wste na termatizei otan kleinw thn teleytaia FORM poy exei paraminei anoixth kai oxi thn 1h poy ksekinaei to programa?
Skeftomilos Δημοσ. 13 Μαρτίου 2005 Δημοσ. 13 Μαρτίου 2005 Περιέργως αυτό που ζητάς είναι αρκετά δύσκολο, σε αντίθεση με τη VB6. Ίσως είναι καλύτερο να αλλάξεις την αρχιτεκτονική σου για να αποφύγεις αυτή την περιπλοκή, αν πάντως επιμένεις βάλε τον παρακάτω κώδικα μέσα σε μία φόρμα FMain, μαζί με ένα κουμπί cmdNewForm. Η βασική ιδέα είναι η κλήση της blocking μεθόδου Application.Run() στην αρχή και η κλήση της Application.Exit() για τον τερματισμό. Προσοχή, αν δεν κληθεί η Application.Exit() με το κλείσιμο της τελευταίας φόρμας, η εφαρμογή σου θα συνεχίσει να τρέχει αόρατη και θα χρειαστείς τον Task Manager για να την τερματίσεις. Αν δε δεις στο τέλος το μήνυμα "Finished!" να είσαι σίγουρος ότι συνέβη ακριβώς αυτό! >Private Shared n As Integer = 0 Shared Sub Main() MsgBox("Starting!") cmdNewForm_Click(Nothing, Nothing) System.Windows.Forms.Application.Run() MsgBox("Finished!") End Sub Private Shared Sub cmdNewForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNewForm.Click Dim f As New FMain() f.Show() n += 1 End Sub Private Sub FMain_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed n -= 1 If n = 0 Then System.Windows.Forms.Application.Exit() End Sub
StavrosD Δημοσ. 13 Μαρτίου 2005 Δημοσ. 13 Μαρτίου 2005 Αρχικά φτιάχνεις ένα Module, το οποίο με το οποίο θα επιλέξεις να ξεκινάει το πρόγραμμα, και στο οποίο θα έχεις και μία μεταβλητή για τον αριθμό ανοιχτών παραθύρων (public shared). Από αυτό το module καλείς το αρχικό form, και κάθε φορά που ανοίγεις ένα form αυξάνεις την μεταβλητή κατα ένα, κάθε φορά που κλείνεις ένα form την μειώνεις κατά ένα, και ελέγχεις αν είναι μηδέν ώστε να τερματίσεις την εφαρμογή
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.