2014-04-15 13 views
10

In riferimento a this MSDN page (o qualsiasi pagina correlata in materia), si afferma che:Perché l'evento LostFocus viene chiamato in momenti diversi?

Quando si cambia la messa a fuoco utilizzando la tastiera, messa a fuoco si verificano eventi in seguente ordine:

  1. Inserisci
  2. Attivato
  3. Lascia
  4. Convalida
  5. Convalidato
  6. LostFocus

Tuttavia, quando si utilizza il mouse per raccogliere gli eventi, i cambiamenti di ordine!

Quando si cambia la messa a fuoco utilizzando il mouse o chiamando il metodo di messa a fuoco, messa a fuoco gli eventi si verificano nel seguente ordine:

  1. Enter
  2. Attivato
  3. LostFocus
  4. Invia
  5. Convalida
  6. convalidato

Non sarebbe questo fare la catena di eventi completamente diversi? La mia interpretazione qui è che la catena della tastiera assicura che tutto funzioni correttamente, quindi solleva l'evento LostFocus. Tuttavia, gli eventi del mouse sembrano sollevarlo prima di convalidare per qualche motivo. Perché?

+0

È quella Attenzione! nell'articolo MSDN che hai collegato formulato abbastanza forte? Non usare mai LostFocus, lascia solo. Ora non importa più. –

+0

Non sto mettendo a fuoco, però. Sono solo curioso di sapere perché l'ordine cambia in base al metodo di input. –

+4

La navigazione da tastiera deve essere in questo ordine per poter applicare le convalide. Quelli sono destinati a reagire a loro al fine di convalidare qualsiasi stringa immessa.Significato, se si passa attraverso le "caselle di testo" Riceverai un altro ordine di eventi, quindi navigando via mouse, ciò che consente a YOu di reagire DIRETTAMENTE dopo aver emesso qualche input. Ti è stato d'aiuto? – icbytes

risposta

0

Come notato sopra:

Nell'articolo di MSDN si è collegato formulata abbastanza forte? Non usare mai LostFocus, lascia solo.

La tastiera di navigazione deve essere in questo ordine per poter applicare le convalide. Quelli sono destinati a reagire a loro al fine di convalidare qualsiasi stringa di input.

1

L'esempio migliore che riesco a pensare è l'aspetto e.Cancel nella convalida. L'uso della tastiera per la navigazione è solitamente un controllo per controllare il tipo di navigazione (compresi i controlli figlio e genitore). L'utilizzo del mouse per la navigazione dei moduli non sempre determina la selezione di un controllo. Ad esempio chiudendo un modulo o semplicemente facendo clic all'esterno del controllo (ovvero riposizionando il modulo). Non è sempre auspicabile che la convalida si verifichi quando si verifica un clic del mouse all'esterno di un controllo. Spero possa aiutare.

Problemi correlati