Μεταβείτε μεταβλητές μεταξύ των Windows Forms Windows χωρίς ShowDialog ()
Όταν προγραμματίζετε μια εφαρμογή Windows Forms, θα χρειαστεί να έχετε πάντα μεταβλητές από ένα δεύτερο παράθυρο φόρμας, όπως μια φόρμα επιλογών ή μια προτροπή αναζήτησης με αναδυόμενα παράθυρα.
Οι περισσότεροι από τους οδηγούς εκεί έξω θα σας πουν ότι θα πρέπει να ανοίξετε τη δεύτερη φόρμα με το ShowDialog (), το οποίο εμποδίζει τον χρήστη να κάνει οτιδήποτε άλλο μέχρι να κλείσει το δεύτερο παράθυρο φόρμας. Αυτό δεν θα λειτουργήσει πολύ καλά για ένα διάλογο εύρεσης / αντικατάστασης, για παράδειγμα. Επίσης, δεν θα λειτουργήσει πολύ καλά για προσαρμοσμένες αναδυόμενες φόρμες.
Ο γρήγορος τρόπος για να περάσετε τις μεταβλητές μεταξύ των εντύπων χρησιμοποιεί τους Αντιπροσώπους. Μπορείτε να ορίσετε ένα eventhandler για το συμβάν κλεισίματος της δεύτερης φόρμας και να χειριστείτε το συμβάν στην πρώτη φόρμα. Αυτό σας επιτρέπει να καταγράφετε μεταβλητές πριν κλείσει το δεύτερο παράθυρο φόρμας.
Για αυτή την άσκηση, θα υποθέσουμε ότι έχουμε δύο μορφές:
MainForm
OptionsForm
Θα υποθέσουμε επίσης ότι έχουμε κάνει κλικ σε κάποιο κουμπί που ανοίγει το OptionsForm με μια κλήση με μέθοδο εμφάνισης (). Τώρα ας ρίξουμε μια ματιά στη μαγεία:
.... ψαλιδίζω… .
ΕπιλογέςForm theform = new OptionsForm ();
theform.Closing + = νέο CancelEventHandler (theform_Closing);
theform.Show ();ιδιωτικό κενό theform_Closing (αποστολέας αντικειμένου, CancelEventArgs ε)
OptionsForm theform = (OptionsForm) αποστολέας;
// Πιάσε τη μεταβλητή από τη φόρμα επιλογών. Η φόρμα επιλογών θα πρέπει να ορίσει αυτήν τη μεταβλητή πριν κλείσει και η μεταβλητή πρέπει να επισημανθεί ως δημόσια.
string localvar = theform.thestringvariable;
Αυτό είναι το μόνο που υπάρχει σε αυτό.