Συνάρτηση SetFocus
Ισχύει για: Εφαρμογές καμβά Εφαρμογές βάσει μοντέλου
Μετακινεί την εστίαση εισόδου σε ένα συγκεκριμένο στοιχείο ελέγχου.
Description
Η συνάρτηση SetFocus δίνει σε ένα στοιχείο ελέγχου την εστίαση εισόδου. Στη συνέχεια, οι πληκτρολογήσεις του χρήστη λαμβάνονται από αυτό το στοιχείο ελέγχου, δίνοντάς του τη δυνατότητα να πληκτρολογήσει σε ένα στοιχείο ελέγχου εισαγωγής κειμένου ή να χρησιμοποιήσει το πλήκτρο Enter για να επιλέξει ένα κουμπί. Ο χρήστης μπορεί επίσης να χρησιμοποιήσει το πλήκτρο Tab, την αφή, το ποντίκι ή άλλη χειρονομία για να μετακινήσει ο ίδιος την εστίαση εισαγωγής. Η συμπεριφορά του πλήκτρου Tab διέπεται από την ιδιότητα TabIndex .
Χρησιμοποιήστε τη συνάρτηση SetFocus για να ορίσετε την εστίαση όταν (κάθε ένα με παράδειγμα παρακάτω):
- υπάρχει ένα πρόσφατα εκτεθειμένο ή ενεργοποιημένο στοιχείο ελέγχου εισόδου, για να καθοδηγήσει το χρήστη σε αυτό που ακολουθεί και για ταχύτερη εισαγωγή δεδομένων.
- επικυρώνεται μια φόρμα, για εστίαση και εμφάνιση του επίμαχου στοιχείου ελέγχου εισόδου για γρήγορη επίλυση.
- εμφανίζεται μια οθόνη, για εστίαση του πρώτου στοιχείου ελέγχου εισόδου με την ιδιότητα OnVisible της οθόνης.
Το στοιχείο ελέγχου με εστίαση μπορεί να διαφέρει οπτικά με βάση τις ιδιότητες FocusedBorderColor και FocusedBorderThickness.
Περιορισμοί
Το SetFocus μπορεί να χρησιμοποιηθεί μόνο με:
Δεν μπορείτε να ορίσετε την εστίαση σε στοιχεία ελέγχου που βρίσκονται εντός ενός στοιχείου ελέγχου Gallery, Edit form ή στοιχείου. Το SetFocus μπορεί να χρησιμοποιηθεί με ένα στοιχείο ελέγχου σε μια κυλιόμενη οθόνη.
Δεν μπορείτε να ορίσετε την εστίαση σε στοιχεία ελέγχου που βρίσκονται εντός ενός στοιχείου ελέγχου Container.
Μπορείτε μόνο να ορίσετε την εστίαση σε στοιχεία ελέγχου που βρίσκονται στην ίδια οθόνη με τον τύπο που περιέχει την κλήση SetFocus.
Η προσπάθεια καθορισμού της εστίασης σε ένα στοιχείο ελέγχου που έχει την ιδιότητα DisplayMode ορισμένη σε Disabledδεν έχει καμία επίπτωση. Η εστίαση θα παραμείνει όπου ήταν προηγουμένως.
Στο Apple iOS, το εικονικό πληκτρολόγιο θα εμφανίζεται αυτόματα μόνο εάν το SetFocus έχει ξεκινήσει από μια άμεση ενέργεια χρήστη. Για παράδειγμα, η επίκληση από την ιδιότητα OnSelect ενός κουμπιού θα εμφανίσει το εικονικό πληκτρολόγιο, ενώ η επίκληση από το OnVisible μιας οθόνης δεν θα το κάνει.
Μπορείτε να χρησιμοποιήσετε τη συνάρτηση SetFocus μόνο σε τύπους συμπεριφοράς.
Σύνταξη
SetFocus ( Στοιχείο ελέγχου )
- Έλεγχος – Απαιτείται. Το στοιχείο ελέγχου που θα δώσει την εστίαση εισόδου.
Παραδείγματα
Εστίαση σε ένα στοιχείο ελέγχου εισόδου που έχει εκτεθεί πρόσφατα ή σε ένα ενεργοποιημένο στοιχείο ελέγχου εισόδου
Πολλά καλάθια αγορών επιτρέπουν στον πελάτη για να χρησιμοποιήσει τη διεύθυνση αποστολής ως διεύθυνση χρέωσης, απαλείφοντας την ανάγκη να εισαχθούν οι ίδιες πληροφορίες δύο φορές. Εάν θέλετε μια διαφορετική διεύθυνση χρέωσης, ενεργοποιούνται τα πλαίσια εισαγωγής κειμένου διεύθυνσης χρέωσης και είναι χρήσιμο να καθοδηγήσετε τον πελάτη σε αυτά τα πρόσφατα ενεργοποιημένα στοιχεία ελέγχου για ταχύτερη εισαγωγή δεδομένων.
Υπάρχουν πολλοί τύποι εδώ, αλλά αυτός που μετακινεί την εστίαση βρίσκεται στην ιδιότητα OnUncheck του στοιχείου ελέγχου Check box:
SetFocus( BillingName )
Το πλήκτρο Tab μπορεί επίσης να χρησιμοποιηθεί για τη γρήγορη μετακίνηση της εστίασης από ένα πεδίο σε ένα άλλο. Για καλύτερη απεικόνιση, το πλήκτρο Tab δεν χρησιμοποιήθηκε σε αυτήν την κίνηση.
Για να δημιουργήσετε αυτό το παράδειγμα:
- Δημιουργία νέας εφαρμογής.
- Προσθέστε τα στοιχεία ελέγχου Label με το κείμενο "Διεύθυνση αποστολής", "Όνομα:", "Διεύθυνση:", "Διεύθυνση χρέωσης", "Όνομα:" και "Διεύθυνση:" και τοποθετήστε τα όπως φαίνεται στην κινούμενη εικόνα.
- Προσθέστε ένα στοιχείο ελέγχου Text input και μετονομάστε το σε ShippingName.
- Προσθέστε ένα στοιχείο ελέγχου Text input και μετονομάστε το σε ShippingAddress.
- Προσθέστε ένα στοιχείο ελέγχου Check box και μετονομάστε το σε SyncAddresses.
- Επιλέξτε την ιδιότητα Text αυτού του στοιχείου ελέγχου στον τύπο
"Use Shipping address as Billing address"
. - Προσθέστε ένα στοιχείο ελέγχου Text input και μετονομάστε το σε BillingName.
- Επιλέξτε την ιδιότητα Default σε αυτό το στοιχείο ελέγχου στον τύπο
ShippingName
. - Επιλέξτε την ιδιότητα DisplayMode σε αυτό το στοιχείο ελέγχου στον τύπο
If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit )
. Με αυτήν την ενέργεια, θα ενεργοποιηθεί ή θα απενεργοποιηθεί αυτόματα αυτό το στοιχείο ελέγχου με βάση την κατάσταση του στοιχείου ελέγχου Check box. - Προσθέστε ένα στοιχείο ελέγχου Text input και μετονομάστε το σε BillingAddress.
- Επιλέξτε την ιδιότητα Default σε αυτό το στοιχείο ελέγχου στον τύπο
ShippingAddress
. - Επιλέξτε την ιδιότητα DisplayMode σε αυτό το στοιχείο ελέγχου στον τύπο
If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit )
. Με αυτήν την ενέργεια, θα ενεργοποιηθεί ή θα απενεργοποιηθεί αυτόματα αυτό το στοιχείο ελέγχου με βάση την κατάσταση του στοιχείου ελέγχου Check box. - Ορίστε την ιδιότητα Default του πλαισίου ελέγχου στον τύπο
true
. Με αυτόν τον τρόπο, θα προεπιλεγεί η διεύθυνση χρέωσης ώστε να χρησιμοποιεί την ίδια τιμή με τη διεύθυνση αποστολής. - Ορίστε την ιδιότητα OnCheck του πλαισίου ελέγχου στον τύπο
Reset( BillingName ); Reset( BillingAddress )
. Εάν ο χρήστης επιλέξει το συγχρονισμό διευθύνσεων αποστολής και χρέωσης, αυτό θα καταργήσει κάθε εισαγωγή χρήστη στα πεδία διευθύνσεων χρέωσης που θα επιτρέπουν στις ιδιότητες Default σε κάθε ένα να αντλούν τις τιμές από τα αντίστοιχα πεδία διευθύνσεων αποστολής. - Ορίστε την ιδιότητα OnUncheck του πλαισίου ελέγχου στον τύπο
SetFocus( BillingName )
. Εάν ο χρήστης επιλέξει να έχει μια διαφορετική διεύθυνση χρέωσης, αυτή η ενέργεια θα εστιάσει στο πρώτο στοιχείο ελέγχου της διεύθυνσης χρέωσης. Τα στοιχεία ελέγχου θα έχουν ενεργοποιηθεί ήδη λόγω των ιδιοτήτων DisplayMode.
Εστίαση σε θέματα επικύρωσης
Σημείωμα
Αν και αυτό το παράδειγμα φαίνειται να είναι ένα στοιχείο ελέγχου Edit form, δυστυχώς το SetFocus δεν υποστηρίζεται ακόμη από αυτό το στοιχείο ελέγχου. Αντί για αυτό, αυτό το παράδειγμα χρησιμοποιεί μια οθόνη με δυνατότητα κύλισης για τη φιλοξενία των στοιχείων ελέγχου εισόδου.
Κατά την επικύρωση μιας φόρμας, μπορεί να σας φανεί χρήσιμη όχι μόνο η εμφάνιση ενός μηνύματος εάν υπάρχει πρόβλημα, αλλά και η μεταφορά του χρήστη στο επίμαχο πεδίο. Η επιλογή αυτή μπορεί να είναι ιδιαίτερα χρήσιμη εάν το εν λόγω πεδίο βρίσκεται εκτός οθόνης και δεν είναι ορατό.
Σε αυτήν την κίνηση, το κουμπί επικύρωσης πιέζεται επανειλημμένα, μέχρι να συμπληρωθούν σωστά όλα τα πεδία. Λάβετε υπόψη σας ότι ο δείκτης του ποντικιού δεν μετακινείται προς τα κάτω από το επάνω μέρος της οθόνης. Αντίθετα, η συνάρτηση SetFocus έχει μετακινήσει την εστίαση εισόδου στο στοιχείο ελέγχου που απαιτεί προσοχή με αυτόν τον τύπο:
If( IsBlank( Name ),
Notify( "Name requires a value", Error ); SetFocus( Name ),
IsBlank( Street1 ),
Notify( "Street Address 1 requires a value", Error ); SetFocus( Street1 ),
IsBlank( Street2 ),
Notify( "Street Address 2 requires a value", Error ); SetFocus( Street2 ),
IsBlank( City ),
Notify( "City requires a value", Error ); SetFocus( City ),
IsBlank( County ),
Notify( "County requires a value", Error ); SetFocus( County ),
IsBlank( StateProvince ),
Notify( "State or Province requires a value", Error ); SetFocus( StateProvince ),
IsBlank( PostalCode ),
Notify( "Postal Code requires a value", Error ); SetFocus( PostalCode ),
IsBlank( Phone ),
Notify( "Contact Phone requires a value", Error ); SetFocus( Phone ),
Notify( "Form is Complete", Success )
)
Για να δημιουργήσετε αυτό το παράδειγμα:
- Δημιουργία μιας νέας κενής εφαρμογής τηλεφώνου.
- Από το μενού Εισαγωγή, επιλέξτε Νέα οθόνη και μετά επιλέξτε Με δυνατότητα κύλισης.
- Στην κεντρική ενότητα της οθόνης, προσθέστε τα στοιχεία ελέγχου Text input και ονομάστε τα ως Όνομα, Οδός1, Οδός2, Πόλη, Κομητεία, Νομός, Ταχυδρομικός κώδικας και Τηλέφωνο. Προσθέστε στοιχεία ελέγχου Label πάνω από κάθε ένα για να προσδιορίσετε τα πεδία. Μπορεί να χρειαστεί να αλλάξετε το μέγεθος της ενότητας εάν δεν είναι αρκετά μεγάλη για να χωρέσει σε όλα τα στοιχεία ελέγχου.
- Προσθέστε ένα στοιχείο ελέγχου επιλογής Icon στο επάνω μέρος της οθόνης, πάνω από την ενότητα με δυνατότητα κύλισης.
- Ορίστε την ιδιότητα OnSelect του στοιχείου ελέγχου εικονιδίου στον τύπο
If( IsBlank( ...
που δίνεται παραπάνω.
Εστίαση κατά την εμφάνιση μιας οθόνης
Σημείωμα
Αν και αυτό το παράδειγμα φαίνειται να είναι ένα στοιχείο ελέγχου Edit form, δυστυχώς το SetFocus δεν υποστηρίζεται ακόμη από αυτό το στοιχείο ελέγχου. Αντί για αυτό, αυτό το παράδειγμα χρησιμοποιεί μια οθόνη με δυνατότητα κύλισης για τη φιλοξενία των στοιχείων ελέγχου εισόδου.
Παρόμοια με την έκθεση ενός στοιχείου ελέγχου εισόδου, κατά την εμφάνιση μιας οθόνης εισαγωγής δεδομένων είναι χρήσιμο να εστιάσετε το πρώτο στοιχείο ελέγχου εισόδου για ταχύτερη εισαγωγή δεδομένων.
Σε αυτήν την κίνηση, η οθόνη εισαγωγής δεδομένων στα αριστερά δεν χρησιμοποιεί το SetFocus. Κατά την εμφάνιση, κανένα στοιχείο ελέγχου εισαγωγής δεν έχει εστίαση, απαιτώντας από τον χρήστη να μετακινηθεί χρησιμοποιώντας το πλήκτρο tab, μέσω αφής, χρησιμοποιώντας το ποντίκι ή άλλο μέσο για εστίαση του πεδίου Name, ώστε να είναι δυνατή η πληκτρολόγηση μιας τιμής σε αυτό.
Στα δεξιά έχουμε την ίδια ακριβώς εφαρμογή με την ιδιότητα OnVisible της οθόνης εισαγωγής δεδομένων που έχει οριστεί σε αυτόν τον τύπο:
SetFocus( Name )
Έτσι, η εστίαση τίθεται στο πεδίο Name αυτόματα. Ο χρήστης μπορεί να αρχίσει να πληκτρολογεί και να μετακινείται με το πλήκτρο Tab μεταξύ των πεδίων αμέσως, χωρίς να απαιτείται προηγούμενη ενέργεια.
Για να δημιουργήσετε αυτό το παράδειγμα:
- Δημιουργήστε την εφαρμογή "εστίαση σε θέματα επικύρωσης" παραπάνω.
- Σε αυτήν την οθόνη, ορίστε την ιδιότητα OnVisible στον τύπο
SetFocus( Name )
. - Προσθήκη δεύτερης οθόνης.
- Προσθήκη ενός στοιχείου ελέγχου Button.
- Επιλέξτε την ιδιότητα OnSelect αυτού του στοιχείου ελέγχου στον τύπο
Navigate( Screen1 )
. - Κάντε προεπισκόπηση της εφαρμογής από αυτήν την οθόνη. Πατήστε το κουμπί. Ο τύπος OnVisible θα αξιολογηθεί και το πεδίο Name θα βρεθεί αυτόματα σε εστίαση.