marcoborn
Goto Top

TabIndex funktioniert nicht

Hallo Forum,
ich habe in .NET ein UserForm gebaut, das einige RadioBoxen, DropDowns etc. enthält. Für alle Steuerelemente habe ich auch die TabIndex-Reihenfolge festgelegt und auch TabStop auf True gesetzt. Wird das UserForm jedoch ausgeführt, dann ist die Reihenfolge des TabIndex völlig durcheinander. Hat .NET hier ein Problem oder gibt einen Trick, mit dem man das Verhalten korrigieren kann?

Vielen Dank,
M. Born

Content-Key: 224617

Url: https://administrator.de/contentid/224617

Printed on: April 19, 2024 at 19:04 o'clock

Mitglied: 106543
Solution 106543 Dec 16, 2013 updated at 13:19:11 (UTC)
Goto Top
Hallo MarcoBorn,

ich hatte selbiges Verhalten, als ich im VBA-Editor die TabIndexes festgelegt habe.
Bei mir wurde damals während das Programm praktisch aufgerufen wird die Reihenfolge verschoben.
Ich hab dann einfach nachdem die Userform initialisiert war die Tabindexes im Quellcode noch einmal festgelegt und die Sache hat dann funktioniert.

á la
Userform1.Label3.Tabindex=1
Userform1.RadioButton3.Tabindex=2
Userform1.Textbox1.TabIndex=3

Grüße
Exze
Member: colinardo
Solution colinardo Dec 16, 2013 updated at 13:19:05 (UTC)
Goto Top
Hallo M. Born,
hast du auch beachtet das keines der Steuerelemente einen negativen oder doppelten Index bekommt. Was man auch beachten sollte ist, das z.B. Group-Boxes auch ein Tab-Index besitzen. Am einfachsten und zuverlässigsten setzt man in Visual Studio die TabIndex Nummern mit dem Extra-Tool in der "Layout"-Symbolleiste und der Funktion "Tab Order"(das Icon ganz rechts auf der Symbolleiste). Wenn man das beachtet sollte es keine Probleme geben.

Grüße Uwe
Member: MarcoBorn
MarcoBorn Dec 16, 2013 at 12:38:32 (UTC)
Goto Top
Hallo,
ich habe das ebenfalls schon probiert. Beim Laden des Formulars sowie bei einigen Events, die z.B. beim Auswählen eines Elements im DropDown ausgelöst werden, starte ich jedes Mal eine Prozedur, die die Reihenfolge neu setzt. Aber auch das hat hier nicht geholfen. Da scheint wohl einiges bei MS durcheinander geraten zu sein. face-sad

Viele Grüße,
M. Born
Member: MarcoBorn
MarcoBorn Dec 16, 2013 at 12:47:55 (UTC)
Goto Top
Hallo Uwe,
ich habe die Indizes manuell von 1 bis 13 durchnummeriert. Ich nutze nicht VisualStudio, sondern SharpDevelop. Bisher habe ich für die GroupBoxes keinen Index vergeben. Eventuell liegt hier das Problem. Das werde ich gleich mal testen. Danke für den Hinweis,

M. Born
Member: colinardo
Solution colinardo Dec 16, 2013 updated at 13:19:15 (UTC)
Goto Top
ich habe die Indizes manuell von 1 bis 13 durchnummeriert. Ich nutze nicht VisualStudio, sondern SharpDevelop.
Beachte zusätzlich auch das bei TabIndex von 0 an begonnen wird zu zählen.
Member: MarcoBorn
MarcoBorn Dec 16, 2013 at 13:09:12 (UTC)
Goto Top
Mein Formular hat zur Zeit folgende Struktur:

UserForm
Groupbox1
RadioButton1
RadioButton2
DropDown1
DropDown2
GroupBox2
RadioButton3
RadioButton4
NumericUpDown1
GroupBox3
RadioButton5
RadioButton6
DropDown3
Dropdown4
Button1
Button2

Ich habe allen o.g. Elementen (ab GroupBox1 beginnend) die TabIndices 1 bis 16 vergeben. Wie müssen die jetzt neu vergeben werden, damit die Reihenfolge passt? Reicht es, die Werte auf 0 bis 15 zu setzen?

M. Born
Member: colinardo
Solution colinardo Dec 16, 2013 updated at 13:44:46 (UTC)
Goto Top
wenn die Schachtelung bei dir so aussieht....
Groupbox1         0 
----------------------------
  RadioButton1    0 
  RadioButton2    1 
  DropDown1       2 
  DropDown2       3 

GroupBox2         1 
----------------------------
  RadioButton3    0 
  RadioButton4    1 
  NumericUpDown1  2
 
GroupBox3         2 
---------------------------
  RadioButton5    0
  RadioButton6    1
  DropDown3       2
  Dropdown4       3

Button1           3
Button2           4
Es wird innerhalb von Groupboxen immer wieder von von 0 aus gestartet.
oder du setzt halt das TabStop bei den GroupBoxes auf False und gibts diesen keinen Index.
Grüße Uwe
Member: MarcoBorn
MarcoBorn Dec 16, 2013 at 13:29:18 (UTC)
Goto Top
Hallo,
leider sind die führenden Leerzeichen, die ich zum Einrücken genutzt hatte, beim Posten entfernt wurden. Die Gliederung ist zwar leicht anders (z.B. sind die Buttons am Ende außerhalb der GroupBox), aber das Prinzip ist jetzt klar. Leider richtet sich .NET immer noch nicht nach den Vorgaben.

Beim Start ist RadioButton1 aktiv (das ist auch so gewollt). Allerdings ist RadioButton2 nicht in der Tab-Reihenfolge enthalten, ebenso wie RadioButton4 und RadioButton5. Scheinbar wird innerhalb einer GroupBox immer nur 1 der beiden RadioButtons in die Reihenfolge aufgenommen, obwohl TabStop bei allen auf True gesetzt ist.

Erst nach manuellem Setzen von TabStop auf True nach Auslösen der Events funktioniert die Reihenfolge korrekt. Das ist zwar eine Krücke, aber immerhin funktioniert es jetzt so wie gewollt.

Vielen Dank an Eure Hilfe,
M. Born
Mitglied: 106543
106543 Dec 16, 2013 at 13:33:13 (UTC)
Goto Top
Hi,

wenn du einen RadioButton von z.b. 3 ausgewählt hast navigiere mal mit den Pfeiltasten. Vielleicht funktionierts da anders als im VBA Editor.

Grüße
Exze
Member: colinardo
colinardo Dec 16, 2013 updated at 13:39:06 (UTC)
Goto Top
Sorry, ich hatte da etwas falsches gepostet,
die richtige Reihenfolge sollt so wie oben aussehen (habs oben korrigiert).
Dein Problem ist eigentlich gar keines denn wenn man RadioButtons innerhalb von einer Gruppe platziert ist immer nur der gerade aktive Radiobutton via Tab auswählbar. Du musst dann via Pfeiltasten den gewünschten Radiobutton auswählen.

Grüße Uwe
Member: MarcoBorn
MarcoBorn Dec 16, 2013 at 13:55:07 (UTC)
Goto Top
Hallo,
mit den Pfeiltasten kann man z.B. zwischen 2 RadioButtons wechseln. Der Sprung von 1. DropDown zum 2. funktioniert jedoch nicht, da die PfeilAbwärts-Taste dann zum Auswählen des Inhalts genutzt wird. Aber da der TabIndex jetzt sauber funktioniert, bin ich ja zufrieden.

Viele Grüße,
M. Born