无法获得所需的tabPage&在启动时显示的表单

时间:2014-12-16 06:30:54

标签: c# winforms tabcontrol tabpage

在通过反复试验找到违规行之后,修改问题以问为什么。答案的提示表明在表单加载后发生了一些事情。我找到了一个行设置tabControl1.SelectedIndex = 1; tabPage2索引也是1,那为什么选择tabPage2呢?将1更改为0后,所有内容都会正确显示。

我无法在tabControl上找到白皮书或教程并使用SelectedIndex,那么有人可以告诉我这是如何工作的吗?

 private void Form1_Load(object sender, EventArgs e)
        {
            getRegions();
            tabControl1.SelectedIndex = 1;

我有一个Windows窗体,tabControl1上有10个tabPages。需求的变化需要除2&之外的所有要求。 8.在删除任何tabPages之前,tabPage2和启动时显示的表单。我可以毫无问题地删除3,4,5,6,7,9,10(剩下1,2,8)。如果我删除tabPage1,启动时显示的tabPage和表单是tabPage8。这是tabPage2,我希望它保持这种状态。

我已经打了几个星期这样打了很久,我很难过。我似乎无法找到描述这一点的任何文章或问题。我发现了多个建议来添加这个.tabControl1.SelectedTab = tabPage2;这似乎没什么用。

可能导致此问题的原因以及我需要做什么? (我真的不知道我需要粘贴哪些代码,如果需要更多,请告诉我)

// tabControl1
            // 
            this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
            | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.tabControl1.Controls.Add(this.tabPage2);
            this.tabControl1.Controls.Add(this.tabPage8);
            this.tabControl1.Location = new System.Drawing.Point(13, 27);
            this.tabControl1.Name = "tabControl1";
            this.tabControl1.SelectedIndex = 1;
            this.tabControl1.Size = new System.Drawing.Size(963, 483);
            this.tabControl1.TabIndex = 1;
            this.tabControl1.SelectedTab = tabPage2;

        // tabPage1
        // 
        this.tabPage1.Location = new System.Drawing.Point(4, 22);
        this.tabPage1.Name = "tabPage1";
        this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
        this.tabPage1.Size = new System.Drawing.Size(955, 457);
        this.tabPage1.TabIndex = 0;
        this.tabPage1.Text = "Region Overall Status";
        this.tabPage1.UseVisualStyleBackColor = true;
        // 


        // tabPage2
        // 
        this.tabPage2.Controls.Add(this.lstBuildList);
        this.tabPage2.Controls.Add(this.label9);
        this.tabPage2.Controls.Add(this.label8);
        this.tabPage2.Controls.Add(this.lblFileLookUp);
        this.tabPage2.Controls.Add(this.btnFileLookUp);
        this.tabPage2.Controls.Add(this.cbRegion);
        this.tabPage2.Controls.Add(this.tabControl2);
        this.tabPage2.Controls.Add(this.tvFileMan);
        this.tabPage2.Controls.Add(this.txtFileLookUp);
        this.tabPage2.Controls.Add(this.cbRegionSites);
        this.tabPage2.Location = new System.Drawing.Point(4, 22);
        this.tabPage2.Name = "tabPage2";
        this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
        this.tabPage2.Size = new System.Drawing.Size(955, 457);
        this.tabPage2.TabIndex = 1;
        this.tabPage2.Text = "Build Attribute Maps from Vista Files";
        this.tabPage2.UseVisualStyleBackColor = true;
        this.tabPage2.Click += new System.EventHandler(this.tabPage2_Click);



        // tabPage8
        // 
        this.tabPage8.Location = new System.Drawing.Point(4, 22);
        this.tabPage8.Name = "tabPage8";
        this.tabPage8.Padding = new System.Windows.Forms.Padding(3);
        this.tabPage8.Size = new System.Drawing.Size(955, 457);
        this.tabPage8.TabIndex = 0;
        this.tabPage8.Text = "Edit Attribute Map/ Create SQL Tables from Attribute Map";
        this.tabPage8.UseVisualStyleBackColor = true;
        this.tabPage8.Click += new System.EventHandler(this.tabPage8_Click);
        this.tabControl1.SelectedTab = tabPage2;
        // 

2 个答案:

答案 0 :(得分:2)

您可以在InitializeComponent之后或在Form_Load之后选择标签页以在启动时显示。

这是我测试的示例代码

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //Select tabpage after initialize
            tabControl1.SelectedTab = tabPage3;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //You can select it at form load or at some other action also like a button click
            //tabControl1.SelectedTab = tabPage3;
        }
    }
}

不要在设计师处写任何代码。始终在InitializeComponent调用之后写入。

答案 1 :(得分:0)

首先是Windows窗体设计器的软件,因为它经常隐藏在进行更改时您没有预料到的更改。 :)

你可以尝试的一件事是将this.tabControl1.SelectedTab移动到InitializeComponent方法之外(我假设你有一个)。有时BeginInit / EndInit调用会产生奇怪的副作用。