Ответ 1
Как насчет этого?
MainTabControl.SelectedIndex = 0;
Как я могу сказать, что TabControl настроит фокус на свой первый TabItem, что-то вроде этого:
псевдокод:
((TabItem)(MainTabControl.Children[0])).SetFocus();
Как насчет этого?
MainTabControl.SelectedIndex = 0;
this.tabControl1.SelectedTab = this.tabControl1.TabPages["tSummary"];
Я нашел, что обычно лучше назвать ваши вкладки и получить доступ к ним через имя, чтобы, если/когда другие люди (или вы) добавляете или подставляете вкладки как часть обновления, вам не нужно идти через свой код и найти и исправить все эти "жестко закодированные" индексы. надеюсь, что это поможет.
Я понимаю, что это было ответино давным-давно, однако лучшим решением было бы привязать ваши элементы к коллекции в вашей модели и выставить свойство, к которому привязан выбранный элемент.
XAML:
<!-- MyTemplateForItem represents your template -->
<TabControl ItemsSource="{Binding MyCollectionOfItems}"
SelectedItem="{Binding SelectedItem}"
ContentTemplate="{StaticResource MyTemplateForItem}">
</TabControl>
Код за:
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");
}
}
}
Теперь все, что вам нужно сделать, чтобы установить элемент:
MyItem = someItemToSelect;
Вы можете использовать ту же логику с свойством SelectedIndex
, далее вы можете использовать оба одновременно.
Этот подход позволяет вам правильно отделить вашу модель от пользовательского интерфейса, что позволит вам заменить TabControl
на что-то еще по строке, но не требует изменения вашей базовой модели.
Посмотрите на свойства элемента управления вкладкой... Разверните свойства вкладки TabPages... Обратите внимание на имена, которые вы дали членам.
т. элемент управления вкладкой, называемый tabMain, с двумя вкладками tabHeader и tabDetail
Затем, чтобы выбрать любую вкладку... Вы должны установить ее с именем табуляции
tabMain.SelectedTab = tabHeader;
tabControl1.SelectedTab = item;
item.Focus();
tabControl.SelectedItem = tabControl.Items [0];
Если у вас есть Tabcontroller с именем tabControl, вы можете установить selectedIndex из разных методов, я использую в основном следующие методы.
отделенного кода:
tabControl.SelectedIndex = 0; // Sets the focus to first tabpanel
клиентский:
Сначала поставьте следующий javascript в ваш файл aspx/ascx:
<script type="text/javascript">
function SetActiveTab(tabControl, activeTabIndex) {
var activeTab = tabControl.GetTab(activeTabIndex);
if(activeTab != null)
tabControl.SetActiveTab(activeTab);
}</script>
Затем добавьте следующее клиентское событие в предпочтительный контроллер:
OnClientClick="function(s, e) { SetActiveTab(tabControl, 0);
лучше использовать следующий тип кода для выбора конкретного элемент в отдельной вкладке...
.
private void PutFocusOnControl(Control element)
{
if (element != null)
Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Input,
(System.Threading.ThreadStart)delegate
{
element.Focus();
});
}
И во время вызова... tabcontrol.isselected = true; PutFocusOnControl (TextBox1);
будет отлично работать...
Private Sub TabControl1_SelectedIndexChanged (отправитель как объект, e As EventArgs) обрабатывает TabControl1.SelectedIndexChanged "МздВох (TabControl1.SelectedIndex)
If TabControl1.SelectedIndex = 0 Then
txt_apclntFrstName.Select()
Else
txtApplcnNo.Select()
End If
End Sub
В основном все ответы здесь имеют дело с SELECTION, которая не отвечает на вопрос.
Может быть, это то, что хотел ОП, но вопрос очень конкретно задает вопрос ФОКУС.
TabItem item = (TabItem)MainTabControl.Items[0];
// OR
TabItem item = (TabItem)MainTabControl.SelectedItem;
// Then
item.Focus();