karidas Δημοσ. 6 Φεβρουαρίου 2011 Δημοσ. 6 Φεβρουαρίου 2011 Καλημέρα είμαι νέος στον χώρο της 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 ευχαριστώ
computeras13 Δημοσ. 6 Φεβρουαρίου 2011 Δημοσ. 6 Φεβρουαρίου 2011 Δοκίμασε να χρησιμοποιήσεις την ιδιότητα Hide για να κρύψεις μια φόρμα. >Me.Hide()
karidas Δημοσ. 6 Φεβρουαρίου 2011 Μέλος Δημοσ. 6 Φεβρουαρίου 2011 Δεν θέλω hide γιατί μετά θα να ανοίξω πάλι την φόρμα 1 και έτσι θα την ανοίξει δυο φόρες. Θα με βόλευε αν την σκότωνα και μετά την άνοιγα από την αρχή. Αλλά μιας και ανάφερες το hide θα μπει στον κώδικα κάτω από το showdiαlog η θα μπει στην 2η φόρμα;
_tasos Δημοσ. 6 Φεβρουαρίου 2011 Δημοσ. 6 Φεβρουαρίου 2011 Με την 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
karidas Δημοσ. 6 Φεβρουαρίου 2011 Μέλος Δημοσ. 6 Φεβρουαρίου 2011 Αν όμως μετά από μια άλλη φόρμα καλέσω την φόρμα 1 ξανά με τον ίδιο τρόπο τότε την κάνει unhide η την δημιουργεί ξανά; Ευχαριστώ για τις μέχρι τώρα απαντήσεις σας. Το βρήκα απλά έπρεπε να ορίσω η εφαρμογή να μην κλείνει όταν κλείνει η αρχική φόρμα αλλά όταν κλείνει η τελευταία φόρμα που θέλω. Ευχαριστώ για άλλη μια φορά.
_tasos Δημοσ. 6 Φεβρουαρίου 2011 Δημοσ. 6 Φεβρουαρίου 2011 Αν καλέσεις τη πρώτη φόρμα με τον ίδιο τρόπο τότε φτιάχνεις ένα νέο 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()
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.