2009-08-04 6 views

Répondre

25

Comment cela?

MainTabControl.SelectedIndex = 0; 
+0

Dans mon cas, comme je l'utilise une grille de données, serrures quelque chose la sélection ou la mise au point, donc je devais envelopper dans un appel à Dispatcher. –

2
tabControl1.SelectedTab = item; 
item.Focus(); 
+2

Quel est l'avantage d'utiliser item.Focus() après avoir défini l'élément sélectionné? –

+0

Écrire plus de code peut-être –

1

tabControl.SelectedItem = tabControl.Items [0];

1

Si vous avez un Tabcontroller nommé tabControl, vous pouvez définir l'index selected à partir de différentes méthodes, j'utilise principalement les méthodes suivantes.

codebehind:

tabControl.SelectedIndex = 0; // Sets the focus to first tabpanel 

clientside:

D'abord, mettre le javascript suivant dans votre fichier ASPX/ascx:

<script type="text/javascript"> 
function SetActiveTab(tabControl, activeTabIndex) { 
    var activeTab = tabControl.GetTab(activeTabIndex); 
    if(activeTab != null) 
     tabControl.SetActiveTab(activeTab); 
}</script> 

ajouter ensuite suivant l'événement clientside au contrôleur preferred:

OnClientClick="function(s, e) { SetActiveTab(tabControl, 0); 
+0

La question concerne WPF, mais votre réponse est spécifique à ASP.NET. –

5

Je me suis rendu compte que cela a été répondu il y a longtemps, mais une meilleure solution serait de lier vos éléments à une collection dans votre modèle et d'exposer une propriété à laquelle l'élément sélectionné est lié.

XAML:

<!-- MyTemplateForItem represents your template --> 
<TabControl ItemsSource="{Binding MyCollectionOfItems}" 
      SelectedItem="{Binding SelectedItem}" 
      ContentTemplate="{StaticResource MyTemplateForItem}"> 
</TabControl> 
code

Derrière:

public ObservableCollection<MyItem> MyCollectionOfItems { 
    get; 
    private set; 
} 

private MyItem selectedItem; 
public MyItem SelectedItem{ 
    get { return selectedItem; } 
    set { 
     if (!Object.Equals(selectedItem, value)) { 
      selectedItem = value; 
      // Ensure you implement System.ComponentModel.INotifyPropertyChanged 
      OnNotifyPropertyChanged("SelectedItem"); 
     } 
    } 
} 

Maintenant, tout ce que vous avez à faire pour définir l'élément est:

MyItem = someItemToSelect; 

Vous pouvez utiliser la même logique avec la propriété SelectedIndex, en outre, vous pouvez utiliser les deux en même temps.

Cette approche vous permet de séparer correctement votre modèle de l'interface utilisateur, ce qui pourrait vous permettre de remplacer le TabControl par autre chose, mais sans vous demander de modifier votre modèle sous-jacent.

0

il est préférable d'utiliser le type de code ci-dessous pour sélectionner l'élément particulier dans l'onglet particulier ...

.

private void PutFocusOnControl(Control element) 
     { 
      if (element != null) 
       Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Input, 
        (System.Threading.ThreadStart)delegate 
        { 
         element.Focus(); 
        }); 
     } 

Et dans le temps d'appel ... tabcontrol.isselected = true; PutFocusOnControl (textbox1);

fonctionne très bien ...

7
this.tabControl1.SelectedTab = this.tabControl1.TabPages["tSummary"]; 

Je l'ai trouvé est généralement une meilleure pratique de nommer vos onglets et y accéder via le nom de sorte que si/quand d'autres personnes (ou vous) ajouter des éléments ou onglets subtact dans le cadre de la mise à jour, vous ne pas avoir à passer par votre code et à trouver et corriger tous ces index «codés en dur». J'espère que cela t'aides.

0

Private Sub TabControl1_SelectedIndexChanged (expéditeur comme objet, e EventArgs Comme) Poignées MsgBox » TabControl1.SelectedIndexChanged (TabControl1.SelectedIndex)

If TabControl1.SelectedIndex = 0 Then 
     txt_apclntFrstName.Select() 
    Else 
     txtApplcnNo.Select() 
    End If 


End Sub 
+0

Veuillez vous assurer que vos réponses sont correctement formatées. – Rob

3

Regardez les propriétés du contrôle onglet ... Développer les TabPages properties "collection" ... Prenez note des noms que vous avez donnés à vos membres.

ie. un contrôle onglet appelé tabMain avec 2 onglets appelé tabHeader et tabDetail

ensuite pour sélectionner l'onglet ... Vous devez définir avec le tabname

tabMain.SelectedTab = tabHeader; 
Questions connexes