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

Πρόβλημα με φόρμα στην visual basic .NET


karidas

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

Δημοσ.

Καλημέρα είμαι νέος στον χώρο της visual basic.net και στο visual studio

Και θα ήθελα να βοήθειά σας.

Το πρόβλημά μου είναι απλό, έχω δυο φόρμες και θέλω να αλληλεπιδρούν μεταξύ τους. Θέλω από την form1 να πηγαίνω στην form2 αλλά να κλείνει η 1 μόλις πας στην 2.εχω βρει το πώς γίνετε το άνοιγμα τις δεύτερης φόρμας αλλά δεν μπορώ να κλείσω την πρώτη. Παρακάτω σας δείχνω τον κώδικα που έχω γράψει στην φόρμα 1 οταν γίνετε click σε ένα κουμπί για αν πάω στην φόρμα 2

 

>

Public Class FormHome


   Dim frm2 As New Form2


   Private Sub Form2bt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Form2bt.Click

       frm2.ShowDialog()

   End Sub


   
End Class



 

ευχαριστώ

Δημοσ.

Δεν θέλω hide γιατί μετά θα να ανοίξω πάλι την φόρμα 1 και έτσι θα την ανοίξει δυο φόρες. Θα με βόλευε αν την σκότωνα και μετά την άνοιγα από την αρχή.

 

Αλλά μιας και ανάφερες το hide θα μπει στον κώδικα κάτω από το showdiαlog η θα μπει στην 2η φόρμα;

Δημοσ.

Με την ShowDialog() σταματάει η εκτέλεση του κώδικά σου, οπότε ακόμα και να καλέσεις την Me.Hide() μετά την ShowDialog() αυτή θα εκτελεστεί όταν κλείσεις τη Form2. Μπορείς να χρησιμοποιήσεις την frm2.Show()

 

>
Public Class FormHome
   Dim frm2 As New Form2

     Private Sub Form2bt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Form2bt.Click
           frm2.Show()
           Me.Hide()
     End Sub

End Class

Δημοσ.

Αν όμως μετά από μια άλλη φόρμα καλέσω την φόρμα 1 ξανά με τον ίδιο τρόπο τότε την κάνει unhide η την δημιουργεί ξανά;

Ευχαριστώ για τις μέχρι τώρα απαντήσεις σας.

 

Το βρήκα απλά έπρεπε να ορίσω η εφαρμογή να μην κλείνει όταν κλείνει η αρχική φόρμα αλλά όταν κλείνει η τελευταία φόρμα που θέλω.

Ευχαριστώ για άλλη μια φορά.

Δημοσ.

Αν καλέσεις τη πρώτη φόρμα με τον ίδιο τρόπο τότε φτιάχνεις ένα νέο object τύπου FormHome. Άρα στη μνήμη σου είναι φορτωμένα 3 objects. Ένα object τύπου frm2 και 2 objects τύπου FormHome. Αν θέλεις να μην φτιάχνεις νέο object κάθε φορά που ανοίγεις μία φόρμα τότε ίσως να ακολουθήσεις μία άλλη προσέγγιση. Θα μπορούσες να έχεις τις μεταβλητές σου frm1, frm2 δηλωμένα σε ένα public module και να αναφέρεσαι από εκεί στα objects σου. Μπορεί να σε βολέψει αυτή η προσέγγιση, ρίξε μια ματιά

>
Public Module MyForms
   Public MainForm As New FormHome
   Public Frm2 As New Form2
End Module

και να αναφέρεσαι σε αυτές τις φόρμες κάπως έτσι.

>
MyForms.Frm2.Show()
MyForms.MainForm.Hide()

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

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

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