Autor Beitrag
Talemantros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: 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 user profile iconTh69: Titel geändert: Tan -> Tab
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.