Apprendimento di VB e domande su Focus ()

0

So che il. Focus () ti permette di concentrarti su un campo di inserimento del testo, o ovunque desideri che il tuo occhio sia diretto, ma mi chiedo, c'è un modo per usare Focus per dirigere la vista della persona a qualunque cosa campo lasciato vuoto?

In altre parole, ad esempio:

Try
            Code to input Field A

            Code to input Field B

            Code to input Field C


       Catch
            'Error Message Box for one or more of the empty Class Ticket Fields.
            MessageBox.Show("One or More of the Fields are empty! Please Enter a Value!")
            txt_ClassA.Focus()
        End Try

Ora diciamo che qualcuno ha dimenticato di inserire del testo nel campo B, c'è un modo tranne che per scrivere un try / catch per ogni singolo campo di input, in modo che il focus .Focus () si concentri effettivamente su B automaticamente?

    
posta Matt Ridge 18.02.2015 - 15:30
fonte

1 risposta

1

Cercherò di rispondere a entrambe le parti tecniche della domanda tra un po ', ma vorrei iniziare sottolineando che convalidare un modulo nella sua interezza prima di fornire un feedback (limitato) sui problemi riscontrati è un po' obsoleto. Puoi leggere le ultime informazioni sull'usabilità (e il campo correlato) sul sito dedicato allo scambio di stack. Nota comunque che una delle tecniche più recenti probabilmente preverrà il tuo problema attuale, quindi potrebbe essere saggio leggere prima di continuare con la tua attuale soluzione. Tuttavia, potresti essere bloccato con codice meno recente o avere requisiti specifici per implementare il modulo, così come cercherò di rispondere alla tua domanda da un punto di vista tecnico.

Si noti che il metodo Focus non lo è solo per attirare l'attenzione su un controllo specifico sul modulo. Anche (o, secondo me, invece) rende un controllo il controllo attivo. Ciò consentirà al tuo programma di scoprire su quale controllo deve essere premuto un tasto o il clic del mouse.

Stai cercando un modo per verificare se tutti i campi obbligatori hanno valori senza creare codice duplicato. Questa è una buona attitudine! Se mi venisse chiesto di farlo, proverei a trovare i punti in comune (le parti che sono duplicate). Nel tuo esempio, questo sarebbe il controllo se una casella di testo contiene o meno un valore e la segnalazione del problema se viene rilevato un problema. Creo quindi un metodo in cui memorizzo il codice comune e "inietto" il codice non comune, che nel tuo esempio sono le diverse caselle di testo. Non ho scritto alcun VB dal VB 6, quindi spero che il pseudo codice VB qui sotto ottenga il punto.

Il metodo:

Private Function TextBoxContainsValue(textBoxToCheck as TextBox, labelText String) as Boolean
    If textBoxToCheck.Text = "" Then
        textBoxToCheck.Focus()
        MessageBox.Show("The text box labelled " + labelText + " is required. Please enter a valid value.");
        TextBoxContainsValue = False
    Else
        TextBoxContainsValue = True
    End If
End Function

Il tuo codice attuale può quindi cambiare in qualcosa del tipo:

If Not TextBoxContainsValue(txt_ClassA, "Class A") Then
    ' No need to check the other text boxes since we can put the focus on just one control.
    Exit Sub
End If

If Not TextBoxContainsValue(txt_ClassB, "Class B") Then
    Exit Sub
End If

If Not TextBoxContainsValue(txt_ClassC, "Class C") Then
    Exit Sub
End If

Ancora una volta, si tratta solo della parte tecnica della tua domanda (aggiunge anche un po 'più di informazioni su quale casella di testo è stata trovata vuota). La ricerca di "convalida del modulo" nel sito Scambio pila esperienza utente (disponibile in:) ha generato oltre 50 pagine di domande. Fai un grande favore a te stesso e ai tuoi utenti, controlla almeno alcuni di loro per avere un'idea su come migliorare l'esperienza degli utenti.

    
risposta data 18.02.2015 - 17:18
fonte

Leggi altre domande sui tag