如何告诉我的 TabControl 将焦点设置为它的第一个 TabItem,如下所示:
伪代码:
((TabItem)(MainTabControl.Children[0])).SetFocus();
如何告诉我的 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
,此外,您可以同时使用两者。
这种方法允许您将模型与 UI 正确分离,这可以让您将 替换为TabControl
其他东西,但不需要您更改底层模型。
查看选项卡控件的属性...展开 TabPages 属性“集合”...记下您为成员指定的名称。
IE。一个名为 tabMain 的选项卡控件,带有两个名为 tabHeader 和 tabDetail 的选项卡
然后选择任一选项卡...您必须使用选项卡名称进行设置
tabMain.SelectedTab = tabHeader;
tabControl1.SelectedTab = item;
item.Focus();
tabControl.SelectedItem = tabControl.Items[0];
如果您有一个名为 tabControl 的 Tabcontroller,您可以从不同的方法设置 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);
将工作正常...
基本上这里的所有答案都涉及SELECTION,它不回答问题。
也许这就是 OP 想要的,但这个问题非常具体地要求FOCUS。
TabItem item = (TabItem)MainTabControl.Items[0];
// OR
TabItem item = (TabItem)MainTabControl.SelectedItem;
// Then
item.Focus();
Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) 处理 TabControl1.SelectedIndexChanged 'MsgBox(TabControl1.SelectedIndex)
If TabControl1.SelectedIndex = 0 Then
txt_apclntFrstName.Select()
Else
txtApplcnNo.Select()
End If
End Sub
在我打开它之后将焦点设置到最后一个选项卡对我很有用:
//这是我将集合分配给选项卡控件 DictTabControl.DataContext = appTabs.DictTabs;
//将选中的项设置为集合中的最后一项,即我刚刚添加到最后的一项。DictTabControl.SelectedItem = DictTabControl.Items[(DictTabControl.Items.Count-1)];