Προς το περιεχόμενο

VB.Net 2003


dtomgr

Προτεινόμενες αναρτήσεις

Δημοσ.

Περιέργως αυτό που ζητάς είναι αρκετά δύσκολο, σε αντίθεση με τη 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

Δημοσ.

Αρχικά φτιάχνεις ένα Module, το οποίο με το οποίο θα επιλέξεις να ξεκινάει το πρόγραμμα, και στο οποίο θα έχεις και μία μεταβλητή για τον αριθμό ανοιχτών παραθύρων (public shared). Από αυτό το module καλείς το αρχικό form, και κάθε φορά που ανοίγεις ένα form αυξάνεις την μεταβλητή κατα ένα, κάθε φορά που κλείνεις ένα form την μειώνεις κατά ένα, και ελέγχεις αν είναι μηδέν ώστε να τερματίσεις την εφαρμογή

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...