Autor |
Beitrag |
Talemantros
      
Beiträge: 444
Erhaltene Danke: 2
Win7 Proff 64bit
C# (VS2013)
|
Verfasst: Do 19.06.14 16:44
Hi,
ich möchte gern beim Wechsel der Tabs eines TabControls eine TextBox selectieren.
Dazu habe ich mir das Ereignis "SelectedIndexChanged" rausgesucht.
Auch TabIndexCHanged zeigt nichts.
Leider geht dies nicht.
Auch eine Msgbox, die ich zum Test ausgeben wollte erscheint nicht.
Ideen?
Gruß
Moderiert von Th69: Titel geändert: Tan -> Tab
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Do 19.06.14 17:13
Nimm Selecting oder den Selected Event. Je nachdem ob du einen Event vor oder nach dem Wechseln brauchst.
|
|
C#
      
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: Do 19.06.14 17:17
Also ich habs gerade getestet. Bei mir funktioniert SelectedIndexChanged ohne Probleme. Hast du mal mit dem Debugger geguckt ob die Methode aufgerufen wird. Vielleicht wird ja irgendwo innerhalb ein Error unterdrückt?
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
Talemantros 
      
Beiträge: 444
Erhaltene Danke: 2
Win7 Proff 64bit
C# (VS2013)
|
Verfasst: Do 19.06.14 19:54
Hi,
@C# Ich hatte in der Anweisung zum Test erst mal nur eine Messagebox drin. Da kann eigentlich nichts weiter auftreten?!
@Ralf
Ich habe nun folgendes mal gemacht
C#-Quelltext 1: 2: 3: 4:
| private void tabControl1_Selected(object sender, TabControlEventArgs e) { MsgAusgabe.ShowInformation(tabControl1.TabIndex.ToString()); } |
Dies wirft aber immer 0
EDIT:
Mit SelectedIndex geht es
Gruß
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Do 19.06.14 20:11
TabIndex hat nix mit den TabPages zu tun. Vielleicht ab und zu auch mal die Hilfe lesen und nicht einfach von der Bezeichnung von etwas auf deren Bedeutung schließen. Insbesondere dann wenn es offensichtlich nicht das erwartete tut.
|
|
Talemantros 
      
Beiträge: 444
Erhaltene Danke: 2
Win7 Proff 64bit
C# (VS2013)
|
Verfasst: Do 19.06.14 20:14
Hi Ralf,
ich hatte schon ein Edit drin in meinem Post.
Sorry
Leider funktioniert es eh nicht so richtig.
Mal gucken
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| private void tabControl1_Selected(object sender, TabControlEventArgs e) { switch (Convert.ToInt32(tabControl1.SelectedIndex)) { case 0: txtCompanyName.Select(); break; case 1: txtZustaendig.Select(); break; case 2: txtTP.Select(); break; case 3: txtUnit.Select(); break; } } |
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Do 19.06.14 20:41
Das TabControl setzt selbst den Focus auf ein Control auf der TabPage. Dafür ist übrigens des TabIndex wichtig über den du schon gestolpert bist. Das TabPage wird versuchen den Focus auf das erste Control (das mit dem kleinsten TabIndex) zu setzen und das macht es nach allen Events. Alles was du im Event veranstaltest wird kommt also zu früh.
Eigentlich solltest du einfach die TabIndex(e) der Controls richtig setzen. Das man die richtig durchtabben kann mit dem Keyboard ist ja schon ein wert an sich. Wenn du trotzdem den aus irgendeinem Grund selbst setzen willst mußt du das asynchron machen so das das zieht nachdem das TabControl selbst den Focus gesetzt hat.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| private void tabControl1_Selected(object sender, TabControlEventArgs e) { switch (e.TabPageIndex)) { case 0: this.BeginInvoke((Action)(() => txtCompanyName.Select())); break; .... |
|
|
Talemantros 
      
Beiträge: 444
Erhaltene Danke: 2
Win7 Proff 64bit
C# (VS2013)
|
Verfasst: Fr 20.06.14 08:35
Guten Morgen,
danke!
Wenn es allerdings so gehen sollte, wäre ja jeder Code überflüssig.
Ich habe nun alle Steuerelemente einen eindeutigen TabIndex gegeben.
Wenn ich diese alle mit Tab durchgehe ist die Reihenfolge auch richtig.
Drücke ich allerdings eine neue Tabpage des TabControls an muss ich auch einmal Tabulator drücken um ins erste Feld zu gelangen.
Leider setzt er es nicht automatisch.
Muss man da noch was einstellen vielleicht?
Gruß
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Fr 20.06.14 12:50
Hab nicht bedacht das das Tab selber auch den Focus haben kann und denn zuerst bekommt.
An deiner Stelle würde ich mir genau überlegen das zu ändern durch das setzen des Focus zeregst du dir die Tastaturbedienung .
Wenn ein Tab den Focus hat kann man mit den Cursortasten durch die Tabs navigieren. Wenn man beim Tabwechsel aber dem Focus dem Tab wegnimmt und einem Control auf dem Tab gibt geht das mit dem Navigieren mit der Tastatur nicht mehr. Dafür braucht der Tab selbst den Focus.
|
|