使用选项卡控件切换表单

时间:2015-02-19 22:03:04

标签: c# winforms

我是C#的初学者,所以请耐心等待。我有一个表单,我有一个选项卡控件,此选项卡控件有3个选项卡。我正在尝试使用每个标签页显示一个表单。我能够在第一个选项卡上显示一个表单,但由于某种原因,其他两个选项卡不会加载表单。这是我的代码。难道我做错了什么?你有什么建议吗?

private void MainTab_Load(object sender, EventArgs e)
{
        HomeScreen fHome = new HomeScreen();
        fHome.TopLevel = false;
        fHome.Visible = true;

        fHome.FormBorderStyle = FormBorderStyle.None;
        fHome.Dock = DockStyle.Fill;
        MainOptions.TabPages[0].Controls.Add(fHome);
}


private void CustomerTab_Click(object sender, EventArgs e)
{
        CustomerScreen fCustomer = new CustomerScreen();
        fCustomer.TopLevel = false;
        fCustomer.Visible = true;
        fCustomer.FormBorderStyle = FormBorderStyle.None;
        fCustomer.Dock = DockStyle.Fill;
        MainOptions.TabPages[1].Controls.Add(fCustomer);
 }

编辑:

更多:

另外,在tabcontrol- InitializeComponent中我有以下

        // HomeTab
        // 
        this.HomeTab.Location = new System.Drawing.Point(4, 22);
        this.HomeTab.Name = "HomeTab";
        this.HomeTab.Size = new System.Drawing.Size(677, 452);
        this.HomeTab.TabIndex = 0;
        this.HomeTab.Text = "Home";
        this.HomeTab.UseVisualStyleBackColor = true;
        this.HomeTab.Click += new System.EventHandler(this.MainTab_Load);
        // 
        // CustomerTab
        // 
        this.CustomerTab.Location = new System.Drawing.Point(4, 22);
        this.CustomerTab.Name = "CustomerTab";
        this.CustomerTab.Padding = new System.Windows.Forms.Padding(3);
        this.CustomerTab.Size = new System.Drawing.Size(677, 452);
        this.CustomerTab.TabIndex = 1;
        this.CustomerTab.Text = "Customer";
        this.CustomerTab.UseVisualStyleBackColor = true;
        this.CustomerTab.Click += new System.EventHandler(this.CustomerTab_Click);

1 个答案:

答案 0 :(得分:0)

我认为你只是缺少Show()方法......

并提出一个建议:我不知道你正在使用什么样的模式,但作为一个初学者,你应该在这些方法之外声明你的表单,作为类范围内的变量,以便稍后可以访问。 ..

private HomeScreen fHome = new HomeScreen();
private CustomerScreen fCustomer = new CustomerScreen();

private void MainTab_Load(object sender, EventArgs e)
{
    fHome.TopLevel = false;
    fHome.Visible = true;
    fHome.FormBorderStyle = FormBorderStyle.None;
    fHome.Dock = DockStyle.Fill;

    MainOptions.TabPages[0].Controls.Add(fHome);
    fHome.Show(); // add this
}

private void CustomerTab_Click(object sender, EventArgs e)
{
    fCustomer.TopLevel = false;
    fCustomer.Visible = true;
    fCustomer.FormBorderStyle = FormBorderStyle.None;
    fCustomer.Dock = DockStyle.Fill;

    MainOptions.TabPages[1].Controls.Add(fCustomer);
    fCustomer.Show(); // add this
}

这里有很多需要改进的地方,但这是一个开始。