从一个选项卡切换到另一个选项卡

时间:2013-01-30 13:20:01

标签: c# winforms

Windows Form中,使用tabControl1时,如何在按钮上单击tabPage1,从一个标签切换到另一个标签(即tabPage1到tabPage2)。

tabPage2.Show(); 
tabControl1.SelectedIndex = tabPage2; 

等但不给任何o / p ...请帮助

4 个答案:

答案 0 :(得分:5)

您应该尝试使用TabControl.SelectedTab Property

  

获取或设置当前选定的标签页。

上述主题也有如下注释:

  

标签页必须位于TabPages集合中才能使其成为当前标签页   标签页。

在您的情况下,这应该有效:

//somewhere in your code, you have to add first the TabPage to the TabControl
tabControl1.TabPages.Add(tabPage2);

tabControl1.SelectedTab = tabPage2;

<强> [UPDATE]

如果这也不起作用,您可能还没有将button1_Click方法与button1的{​​{1}}事件处理程序相关联。而且您更有可能只是在表单的另一个控件容器或表单本身中创建了Click控件,然后剪切并粘贴它到button1控件。 / p>

这将删除事件处理程序。

只需将tabPage1方法重新分配为button1_Click的{​​{1}}事件处理程序,并确保使用button1属性(或Click,如某些这个问题的其他答案和评论)。

以下是对类似问题的引用:cut and paste controls lost event handlers

答案 1 :(得分:0)

请注意TabControl.SelectedIndex属性是整数。 (您也可以使用SelectedTab属性,如其他答案所示)

因此,您将其设置为要选择的选项卡:

tabControl1.SelectedIndex = 1;

这是一个基于msdn代码的完整示例,(注意它没有经过测试,因为我不在Windows上,并且没有在这里设置.NET):

using System.Drawing;
using System.Windows.Forms;

public class Form1 : Form
{
    private TabControl tabControl1;
    private TabPage tabPage1;
    private TabPage tabPage2;
    private Button btn;

    private void MyTabs()
    {
        this.tabControl1 = new TabControl();
        this.tabPage1 = new TabPage();
        this.tabPage2 = new TabPage();
        this.btn = new Button();

        this.tabControl1.Controls.AddRange(new Control[] {
            this.tabPage1,
            this.tabPage2});
        this.tabControl1.Padding = new Point(15, 10);
        this.tabControl1.Location = new Point(35, 25);
        this.tabControl1.Size = new Size(220, 220);
        this.btn.Location = new Point(10, 250);

        // Selects THE FIRST tab initially.. 
        this.tabControl1.SelectedIndex = 0;

        this.tabPage1.Text = "myTabPage1";
        this.tabPage1.TabIndex = 0;

        this.tabPage2.Text = "myTabPage2";
        this.tabPage2.TabIndex = 1;

        this.btn.Text = "Select myTabPage2";
        this.btn.Click += new EventHandler(btn_click);

        this.Size = new Size(400, 400);
        this.Controls.AddRange(new Control[] {
            this.tabControl1});
        this.Controls.Add(btn);
    }
    public void btn_click(object sender, EventArgs e)
    {
        tabControl1.SelectedIndex = 1;
    }
    public Form1()
    {
        MyTabs();
    }

    static void Main() 
    {
        Application.Run(new Form1());
    }
}

答案 2 :(得分:0)

this.tabControl1.SelectedTab = this.tabControl1.TabPages[1];

答案 3 :(得分:0)

试试这段代码:

tabControl1.SelectedPage = tabpage1;