2009-08-04 13 views

risposta

25

ne dici di questo?

MainTabControl.SelectedIndex = 0; 
+0

Nel mio caso, come io uso un datagrid, qualcosa si blocca la selezione o lo stato attivo, quindi ho dovuto racchiuderlo in una chiamata a Dispatcher. –

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

Qual è il vantaggio dell'uso di item.Focus() dopo aver impostato l'elemento selezionato? –

+0

Scrivi più codice forse? –

1

tabControl.SelectedItem = tabControl.Items [0];

1

Se si dispone di un Tabcontroller denominato tabControl, è possibile impostare l'Indice selezionato da diversi metodi, per lo più utilizzo i seguenti metodi.

codebehind:

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

lato client:

In primo luogo, inserire il seguente javascript nel aspx/file di ascx:

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

Quindi aggiungere seguente evento lato client al regolatore preferita:

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

La domanda si riferisce a WPF, tuttavia la tua risposta è specifica per ASP.NET. –

5

Mi rendo conto che a questa soluzione è stata data risposta molto tempo fa, tuttavia una soluzione migliore sarebbe quella di associare gli elementi a una raccolta nel modello ed esporre una proprietà a cui è associato l'elemento selezionato.

XAML:

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

Codice Dietro:

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"); 
     } 
    } 
} 

Ora, tutto ciò che dovete fare per impostare la voce è:

MyItem = someItemToSelect; 

È possibile utilizzare la stessa logica con la proprietà SelectedIndex, inoltre, è possibile utilizzare i due allo stesso tempo.

Questo approccio consente di separare il modello correttamente dall'interfaccia utente, che potrebbe consentire di sostituire lo TabControl con qualcos'altro lungo la linea ma senza richiedere la modifica del modello sottostante.

0

è meglio usare i seguenti tipi di codice per selezionare la particolare voce nella scheda particolare ...

.

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

E nel tempo ... tabcontrol.isselected = vera vocazione; PutFocusOnControl (textbox1);

funzionerà correttamente ...

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

ho trovato di solito è una pratica migliore per nominare le schede e accedervi tramite il nome in modo che se/quando altre persone (o) aggiungere o schede subtact come parte di aggiornamento, si non devi passare attraverso il tuo codice e trovare e correggere tutti quegli indici "hard coded". spero che questo ti aiuti.

0

Private Sub TabControl1_SelectedIndexChanged (mittente come oggetto, e As EventArgs) Handles TabControl1.SelectedIndexChanged 'MsgBox (TabControl1.SelectedIndex)

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


End Sub 
+0

Assicurati che le tue risposte siano formattate correttamente. – Rob

3

esaminare le proprietà per il controllo scheda ... Espandere le TabPages proprietà "collezione" ... Prendi nota dei nomi che hai dato ai membri.

ie. un controllo scheda denominata tabMain con 2 schede chiamato tabHeader e tabDetail

Quindi per selezionare una linguetta ... È necessario impostare con il tabname

tabMain.SelectedTab = tabHeader; 
Problemi correlati