如何在.NET CF TabControl上通过编程方式选择一个选项卡?

9

使用.NET Framework 2.0/3.5的TabControl,我可以通过SelectedTab属性来编程选择一个选项卡,如下所示:

//toggles between tabPage1 and tabPage2
private void button1_Click(object sender, EventArgs e)
{
    if (tabControl1.SelectedTab == tabPage1)
        tabControl1.SelectedTab = tabPage2;
    else
        tabControl1.SelectedTab = tabPage1;
}

.NET Compact Framework的TabControl不像.NET Framework的TabControl那样拥有SelectedTab属性。那么,我如何在程序中选择一个选项卡呢?
5个回答

23

TabControl.SelectedIndex


1
我发现当选中TabControl时,它显示不正确。似乎在选择TabControl后刷新它是有用的,所以,如果TabControl被称为TabForm并且具有多个选项卡,则可能是这样的: Me.TabForm.SelectedIndex = 0 Me.TabPg0.Refresh '其中TabPg0是索引0处的选项卡的名称 - Neil Dunlop
对我有效的方法是在最新的TabItem上设置“IsSelected”,然后在TabControl上使用UpdateLayout():((TabItem)tabControl.Items [tabControl.Items.Count-1]).IsSelected = true; tabControlCode.UpdateLayout(); - Christian Larsson

0
我编写了这段代码。当单击tabPage1时,程序将关闭:
private void tabControl1_MouseClick(object sender, MouseEventArgs e)
    {
        if (tabControl1.SelectedTab == tabPage1)
        {
            MessageBox.Show("Logout!");
            Application.Exit();
        }
    }

0

我发现当选择TabControl时,它的显示有问题。似乎在选择TabControl后刷新它是有用的。所以,在TabControl被称为TabForm且具有多个标签页的情况下,这可能是:

 Me.TabForm.SelectedIndex = 0
 Me.TabPg0.Refresh            'Where TabPg0 is the name of the Tab at Index 0

-1

在 .Net 4 中可以使用

if (tabControl1.Controls[5] == tabControl1.SelectedTab)
                MessageBox.Show("Tab 5 Is Selected");

或者

if ( tabpage5 == tabControl1.SelectedTab)
         MessageBox.Show("Tab 5 Is Selected");

这个问题不是关于.NET 4的,而是关于.NET CF的。 - Andrew Barber

-3

WPF代码,请尝试以下内容:

if (tabControl1.SelectedValue == tabPage1)
    tabControl1.SelectedValue = tabPage2;
else
    tabControl1.SelectedValue = tabPage1;

WPF和紧凑框架不兼容,是吗...?(还是我错过了什么?) - peSHIr
此外,这正是问题所说的不起作用的东西:需要一个可行的替代方案。 - peSHIr
抱歉,我漏掉了Compact语句,但我相信SelectedValue可以在紧凑框架中工作,只是缺少SelectedTab。 - Mark Kadlec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接