2013-04-17 27 views
5

Ho un modulo windows vb.net con circa 15 caselle combinate e 15 caselle di testo, insieme a molti altri controlli. Tutte queste caselle di testo e caselle combinate si trovano in pannelli. La ragione di questo è che ho bisogno di regolare la proprietà visibile dei controlli in base a ciò che l'utente seleziona/inserisce, quindi raggruppare ogni etichetta e controllo insieme nei propri pannelli sembrava un modo semplice per ottenere ciò. Ho impostato l'ordine di tabulazione tramite proprietà, ma non funziona. Quando passo il mio modulo, salta in giro e non segue l'ordine di tabulazione che ho impostato. Questo perché i miei controlli si trovano ciascuno in pannelli separati? Ho impostato TabStop su false per tutto ciò su cui non voglio un tabstop, sono un po 'confuso su cosa sta succedendo qui, sembra davvero che il fatto che le mie caselle di combo e le mie caselle di testo siano ciascuna all'interno dei loro pannelli impedisce il mio Tab Indici per funzionare. Qualcuno può confermare questo o avere altre idee su ciò che potrebbe accadere? Tab Index funziona se creo un nuovo modulo.L'indice di tabulazione non funziona con i controlli nei pannelli?

+1

L'impostazione delle proprietà TabStop e TabIndex è in genere sufficiente. Se non funziona, controlla gli eventi nel modulo in cui potresti avere il codice che interferisce con la messa a fuoco dei controlli. – LarsTech

+1

Grazie per il suggerimento, ma non c'è niente nel mio codice a questo punto che sta interessando il focus dei controlli – TypeM1smatch

+0

Uso della tabella che ho disegnato sotto come modello ..... Compilalo con i tuoi TABSTOPS e TABORDER e prova a ELENCO TUTTI i controlli su il modulo. – Zeddy

risposta

7

Che ci crediate o no, l'ordinamento del pannello DEVE assolutamente influire sul TabIndex. Ho trovato che il modo più semplice per gestire l'ordine di tabulazione su un modulo a più riquadri è utilizzare Visualizza> Ordine tabulazioni come suggerito da LarsTech. Quindi, una volta che l'ordine di tabulazione è visibile, sarai in grado di vedere come i pannelli influenzano l'ordinamento generale dei controlli contenuti in ciascun pannello. Quindi, fare clic con il pulsante sinistro del mouse uno alla volta sui pannelli effettivi, nell'ordine in cui si desidera che il flusso vada. Noterai che ordinerà automaticamente i comandi all'interno di ciascun pannello, con l'ordine generale del pannello nell'ordine specificato. Una volta fatto ciò, puoi fare clic su ciascun controllo all'interno di ciascun pannello per impostare l'ordine di tabulazione relativo di un controllo all'interno di un determinato pannello.

3

Provare a utilizzare "Visualizza-Ordine scheda" nella finestra di progettazione di Visual Studio e fare clic su ciascun contenitore e controllare nell'ordine desiderato. L'indice di tabulazione del contenitore genitore (pannelli) è importante.

+1

Grazie, ho provato anche quello, ancora senza dadi – TypeM1smatch

+1

@EricJ Prova a ricreare il problema in un nuovo piccolo progetto. Se riesci a ricrearlo, modificalo nel tuo post. – LarsTech

+0

Risposta corretta. "L'indice di tabulazione del contenitore genitore (pannelli) è importante" – fedeteka

2

Impostare TabStop su FALSE significa che verrà saltato quando il suo turno arriva nell'ordine di tabulazione. Normalmente si imposta TabStop per LABEL su FALSE e tutti gli altri controlli INTERATTIVI su TABSTOP = True (a meno che il controllo non sia disattivato fuori rotta).

Non saltare da scheda a scheda. L'ordine TabStop e Tab dovrebbe essere qualcosa di simile alla lista qui sotto.

Name   Parent  TabOrder  TabStop 
======================================================= 
Form   -    0    - 
TabStrip1 Form   1    True 
Tab1   TabStrip1  2    True 
Label1  Tab1   3    False 
Textbox1  Tab1   4    True 
Label2  Tab1   5    False 
Combo1  Tab1   6    True 

Tab2   TabStrip1  7    True 
Label3  Tab2   8    False 
Textbox2  Tab2   9    True 
Label4  Tab2   10    False 
Combo2  Tab2   11    True 

Tab3   TabStrip1  12    True 
Label5  Tab3   13    False 
Textbox3  Tab3   14    True 
Label6  Tab3   15    False 
Combo3  Tab3   16    True 
+1

Grazie per questo Zaf. Penso che tu abbia qualcosa qui. Darò questa possibilità stasera e vedrò se riesco a capire dove sono andato fuori pista – TypeM1smatch

1

Ho scoperto che è necessario esaminare OGNI indice di tabulazione per ogni controllo e raggruppamento di controlli (casella di gruppo, pannello, qualunque). A differenza di Classic VB, .Net non aggiorna tutti gli altri indici di tab per te. Puoi avere tutti i controlli che desideri con lo stesso indice di tabulazione su un modulo, pannello o altro tipo di raggruppamento.

BTW, per coloro che hanno pubblicato la voce di menu Visualizza - Ordine schede, grazie. Non sapevo che fosse lì e mi ha aiutato immensamente a ordinare correttamente un modulo che ho con più caselle di gruppo annidate. Questo era uno strumento eccellente per rivedere l'ordine di tabulazione. Se lo usi, assicurati di prestare attenzione a ogni livello di nidificazione.

+0

"A proposito, per chi ha pubblicato la voce di menu Visualizza-Ordine scheda, grazie.Non sapevo che fosse lì e mi ha aiutato immensamente a ordinare correttamente un modulo che ho con più caselle di gruppo annidate. Questo era uno strumento eccellente per rivedere l'ordine di tabulazione. Se lo usi, assicurati di prestare attenzione a ogni livello di nidificazione. "Lo stesso qui! Strumento davvero bello – fedeteka