Jak mogę sprawdzić moją TabControl aby ustawić ostrość na pierwszym TabItem, coś takiego:Jak mogę uczynić określoną TabItem skupić się na TabControl bez kliknięcia?
pseudo-KOD:
((TabItem)(MainTabControl.Children[0])).SetFocus();
Jak mogę sprawdzić moją TabControl aby ustawić ostrość na pierwszym TabItem, coś takiego:Jak mogę uczynić określoną TabItem skupić się na TabControl bez kliknięcia?
pseudo-KOD:
((TabItem)(MainTabControl.Children[0])).SetFocus();
Jak chodzi?
MainTabControl.SelectedIndex = 0;
tabControl1.SelectedTab = item;
item.Focus();
Jaka jest korzyść z używania item.Focus() po ustawieniu wybranego elementu? –
Napisać więcej kodu? –
tabControl.SelectedItem = tabControl.Items [0];
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);
Pytanie dotyczy WPF, jednak twoja odpowiedź jest specyficzna dla ASP.NET. –
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.
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 ...
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.
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
Upewnij się, że twoje odpowiedzi są poprawnie sformatowane. – Rob
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;
W moim przypadku, jak używam DataGrid coś zamki wybór lub fokus, więc musiałem zawinąć to w wezwanie do Dispatchera. –