【问题标题】:Switch from one tab to other programatically以编程方式从一个选项卡切换到另一个选项卡
【发布时间】:2016-12-22 03:16:05
【问题描述】:

Windows Form 中,在使用 tabControl1 时,如何在 tabPage1 中单击按钮时从一个选项卡切换到另一个选项卡(即 tabPage1 到 tabPage2)。尝试了很多

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

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

【问题讨论】:

  • 始终了解 LHS 和 RHS 的含义。一方面你有一个 int 字段,另一方面你有 TabPage 控件,因此出现错误。那就是说你在下面有正确的答案。不要忘记点击答案左上角的绿色勾号来接受它。
  • tabControl.SelectedIndex = Ordinal 我发现这是最好的方法..
  • 能否包含更广泛的代码示例?

标签: c# winforms


【解决方案1】:

您应该尝试使用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;

[更新]

如果这也不起作用,则很可能您没有将button1_Click 方法关联为button1Click 事件处理程序。更有可能是您刚刚在表单的另一个控件容器或表单本身中创建了 button1 控件,然后将其剪切并粘贴tabPage1 控件中。

这将删除事件处理程序。

只需将button1_Click 方法重新分配为button1Click 事件处理程序,并确保使用SelectedTab 属性(或SelectedIndex,如本问题的其他答案和cmets 所示)。

这里有一个类似问题的参考:cut and paste controls lost event handlers

【讨论】:

  • @Adi0745 究竟是什么不工作,你得到什么错误?
  • 在按钮上单击...我仍然在同一个选项卡上,即 tabPage1
  • 您是否已将tabPage2 控件添加到您的tabControl1TabPages 集合中?
  • private void button1_Click(object sender, EventArgs e) { tabControl1.TabPages.Add(tabPage2); tabControl1.SelectedTab = tabPage2; tabPage2.Focus(); }
  • @Adi0745 您应该将所有相关代码放入问题中。
【解决方案2】:

试试这个代码:

tabControl1.SelectedPage = tabpage1;

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      注意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());
          }
      }
      

      【讨论】:

      • 别忘了在那个标签上设置Focus
      • @Bob。为什么重点很重要?
      • 如果您在显示该页面时有需要处理的事件,则更方便。
      猜你喜欢
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      相关资源
      最近更新 更多