2013-04-17 5 views
5

Ich habe ein vb.net Windows-Formular mit etwa 15 Comboboxen und 15 Textfeldern, zusammen mit einigen anderen Steuerelementen. Alle diese Textfelder und Comboboxen befinden sich in Feldern. Der Grund dafür ist, dass ich die sichtbare Eigenschaft von Steuerelementen anpassen muss, basierend auf dem, was der Benutzer auswählt/eingibt, so dass das Gruppieren jedes Etiketts und jeder Steuerung in ihren eigenen Panels wie ein einfacher Weg erscheint, dies zu erreichen. Ich habe die Tab-Reihenfolge über Eigenschaften festgelegt, aber es funktioniert nicht. Wenn ich mein Formular durchgebe, wird es übersprungen und folgt nicht der Tab-Reihenfolge, die ich festgelegt habe. Liegt das daran, dass sich meine Steuerelemente jeweils in separaten Panels befinden? Ich habe TabStop für alles falsch gesetzt, für das ich keinen Tabstop möchte, ich bin etwas verwirrt darüber, was hier vor sich geht, es scheint wirklich, dass die Tatsache, dass meine Comboboxen und Textfelder sich jeweils in ihren eigenen Panels befinden, meine verhindert Tab Indizes funktionieren. Kann jemand das bestätigen oder andere Ideen haben, was passiert? Der Tab-Index funktioniert, wenn ich ein neues Formular erstelle.Tab-Index funktioniert nicht mit Steuerelementen in Panels?

+1

Das Festlegen der TabStop- und TabIndex-Eigenschaften ist normalerweise ausreichend. Wenn es nicht funktioniert, überprüfen Sie alle Ereignisse in Ihrem Formular, bei denen Code möglicherweise die Fokussierung von Steuerelementen beeinträchtigt. – LarsTech

+1

Danke für den Vorschlag, aber es gibt nichts in meinem Code, der den Fokus der Kontrollen beeinflusst – TypeM1smatch

+0

Verwenden Sie die Tabelle, die ich unten als Vorlage zeichnete ..... Befüllen Sie es mit Ihren TABSTOPS und TABORDER und versuchen Sie, alle Steuerelemente auf die Form. – Zeddy

Antwort

7

Ob Sie es glauben oder nicht, die Panel-Bestellung beeinflusst absolut den TabIndex. Ich habe festgestellt, dass der einfachste Weg, die Tab-Reihenfolge in einem Formular mit mehreren Feldern zu bearbeiten, die Verwendung von Ansicht> Tab-Reihenfolge ist, wie von LarsTech vorgeschlagen. Sobald die Tab-Reihenfolge sichtbar ist, können Sie sehen, wie sich die Panels auf die gesamte Anordnung der Steuerelemente in jedem Panel auswirken. Klicken Sie als Nächstes mit der linken Maustaste nacheinander auf die tatsächlichen Panels in der Reihenfolge, in der der Flow ausgeführt werden soll. Sie werden feststellen, dass die Steuerelemente in den einzelnen Bereichen automatisch untergeordnet werden. Die Reihenfolge der übergeordneten Bereiche muss in der von Ihnen festgelegten Reihenfolge liegen. Sobald dies erledigt ist, können Sie auf jedes Steuerelement in jedem Panel klicken, um die relative Tab-Reihenfolge eines Controls in einem bestimmten Panel festzulegen.

3

Versuchen Sie "View - Tab Reihenfolge" im Visual Studio Designer und klicken Sie auf jeden Container und Kontrolle in der gewünschten Reihenfolge. Der Tab-Index des übergeordneten Containers (Panels) ist wichtig.

+1

Danke, ich habe das auch versucht, immer noch keine Würfel – TypeM1smatch

+1

@EricJ Versuchen Sie, das Problem in einem neuen kleinen Projekt neu zu erstellen. Wenn Sie es neu erstellen können, bearbeiten Sie das in Ihren Beitrag. – LarsTech

+0

Richtige Antwort. "Der Tab-Index des übergeordneten Containers (Panels) zählt" – fedeteka

2

Wenn TabStop auf FALSE gesetzt ist, wird es übersprungen, wenn es an der Reihe ist. Normalerweise würden Sie TabStop für LABELs auf FALSE und alle anderen INTERACTIVE-Steuerelemente auf TABSTOP = True setzen (außer das Steuerelement wird natürlich deaktiviert).

Nicht von Tab nach Tab übergehen. Ihre TabStop- und Tab-Reihenfolge sollte in etwa der folgenden Liste entsprechen.

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

Danke für diesen Zaf. Ich denke, du hast hier etwas vor. Ich werde es heute Abend versuchen und sehen, ob ich herausfinden kann, wo ich weg bin. – TypeM1smatch

1

Ich habe festgestellt, dass Sie auf jeden Register Index für jedes Steuerelement und Gruppierung von Steuerelementen (Gruppenfeld, Panel, was auch immer). Im Gegensatz zu Classic VB aktualisiert .Net nicht alle anderen Tab-Indizes für Sie. Sie können beliebig viele Steuerelemente mit demselben Registerindex für ein Formular, Panel oder einen anderen Gruppierungstyp verwenden.

BTW, für diejenigen, die den Menüpunkt Ansicht - Tab-Reihenfolge, danke. Ich wusste nicht, dass es da war und es hat mir enorm geholfen, ein Formular, das ich mit mehreren verschachtelten Gruppenfeldern habe, richtig zu bestellen. Dies war ein ausgezeichnetes Tool zum Überprüfen der Tab-Reihenfolge. Wenn Sie dies verwenden, achten Sie unbedingt auf jede Verschachtelungsebene.

+0

"BTW, für diejenigen, die den View - Tab Order Menüeintrag gepostet haben, danke.Ich wusste nicht, dass es da war und es hat mir enorm geholfen, ein Formular, das ich mit mehreren verschachtelten Gruppenfeldern habe, richtig zu bestellen. Dies war ein ausgezeichnetes Tool zum Überprüfen der Tab-Reihenfolge. Wenn du dies verwendest, achte darauf, dass du auf jede Verschachtelungsebene achtest. "Das gleiche hier! Wirklich nettes Werkzeug – fedeteka