在aWindows Form
中,使用tabControl1时,如何在tabPage1中单击按钮时从一个选项卡切换到另一个选项卡(即tabPage1到tabPage2)。尝试了很多
tabPage2.Show();
tabControl1.SelectedIndex = tabPage2;
等等,但不给任何o / p ...请帮助
您应该尝试使用TabControl.SelectedTab 属性:
获取或设置当前选中的标签页。
上面的话题也有如下备注:
标签页必须在 TabPages 集合中才能使其成为当前标签页。
在您的情况下,这应该有效:
//somewhere in your code, you have to add first the TabPage to the TabControl
tabControl1.TabPages.Add(tabPage2);
tabControl1.SelectedTab = tabPage2;
[更新]
如果这也不起作用,则很可能您没有将该button1_Click
方法关联为button1
的Click
事件处理程序。更有可能的是,您只是在button1
表单的另一个控件容器或表单本身中创建了控件,然后将其剪切并粘贴到tabPage1
控件中。
这将删除事件处理程序。
只需将该button1_Click
方法重新分配为button1
的Click
事件处理程序并确保您使用该SelectedTab
属性(或SelectedIndex
如该问题的其他一些答案和评论中所示)。
这是对类似问题的引用:剪切和粘贴控件丢失事件处理程序。
试试这个代码:
tabControl1.SelectedPage = tabpage1;
this.tabControl1.SelectedTab = this.tabControl1.TabPages[1];
.
注意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());
}
}