2009-08-04 10 views

Odpowiedz

25

Jak chodzi?

MainTabControl.SelectedIndex = 0; 
+0

W moim przypadku, jak używam DataGrid coś zamki wybór lub fokus, więc musiałem zawinąć to w wezwanie do Dispatchera. –

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

Jaka jest korzyść z używania item.Focus() po ustawieniu wybranego elementu? –

+0

Napisać więcej kodu? –

1

tabControl.SelectedItem = tabControl.Items [0];

1

Jeśli masz TabController o nazwie tabControl można ustawić selectedIndex z różnych metod, używam głównie następujące metody.

codebehind:

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

stronie klienta:

pierwsze, umieścić następujące JavaScript w aspx pliku ascx /:

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

Następnie dodać po stronie klienta imprezy do preferowanym regulatora:

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

Pytanie dotyczy WPF, jednak twoja odpowiedź jest specyficzna dla ASP.NET. –

5

Zdaję sobie sprawę, że odpowiedź została udzielona dawno temu, jednak lepszym rozwiązaniem byłoby powiązanie produktów z kolekcją w modelu i ujawnienie właściwości, do której jest przypisany wybrany element.

XAML:

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

Code Behind:

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

Teraz, wszystko co musisz zrobić, aby ustawić element jest:

MyItem = someItemToSelect; 

Możesz używać tej samej logiki Właściwość SelectedIndex, można również użyć dwóch w tym samym czasie.

To podejście umożliwia prawidłowe odseparowanie modelu od interfejsu użytkownika, co może pozwolić na zastąpienie modelu TabControl czymś innym w dolnej linii, ale nie wymagającym zmiany modelu podstawowego.

0

lepiej jest stosować następujące rodzaje kodu do wybrania konkretnego pozycję w danej karcie ...

.

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

A w czasie ... tabcontrol.isselected = true dzwoni; PutFocusOnControl (textbox1);

będzie działać dobrze ...

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

Znalazłem to zwykle najlepszym rozwiązaniem, aby wymienić swoje karty i uzyskać do niego dostęp za pośrednictwem nazwy tak, że jeśli/kiedy inne osoby (lub) dodanie lub subtact zakładkach jako część aktualizacji, ty nie trzeba przechodzić przez kod, znaleźć i naprawić wszystkie te "zakodowane" indeksy. mam nadzieję że to pomoże.

0

Private Sub TabControl1_SelectedIndexChanged (nadawca As Object, e As EventArgs) Uchwyty TabControl1.SelectedIndexChanged „MsgBox (TabControl1.SelectedIndex)

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


End Sub 
+0

Upewnij się, że twoje odpowiedzi są poprawnie sformatowane. – Rob

3

Spójrz na właściwości dla formantu karty ... Rozwiń TabPages właściwości "kolekcja" ... Zanotuj nazwiska, które dałeś członkom.

tj. kontrola zakładka o nazwie tabMain z 2 kartami nazywa tabHeader i tabDetail

Następnie aby wybrać kartę ... Musisz ustawić go z TABNAME

tabMain.SelectedTab = tabHeader;