程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# WinForm如何在選項卡中集成加載多個窗體

C# WinForm如何在選項卡中集成加載多個窗體

編輯:C#入門知識

C# WinForm如何在選項卡中集成加載多個窗體


最近需要做的一個項目,為了避免從菜單中選擇的麻煩,需要把幾個窗體集成到一起,通過TabControl選項卡來切換。這個功能和之前做的一個通過菜單選擇將窗體加載到選項卡中類似,不同的是激發的源頭不同,我們來看一下吧。

項目文件組織:

\

主程序界面:

將tabControl1中的兩個選項頁的tag分別寫上form2和form3的類名稱。

\

被包含窗體Form2:

\

被包含窗體Form3:

\

運行結果:from2和form3兩個窗體都集成到form1中的選項卡中顯示:

\

\

Form1實現代碼:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Windows.Forms;

namespace tabWindowTest
{
    public partial class Form1 : Form
    {
        public int[] s = {0, 0};         //用來記錄from是否打開過

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //初始打開時就加載Form2
            string formClass = "tabWindowTest.Form2"
            GenerateForm(formClass, tabControl1);
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(s[tabControl1.SelectedIndex]==0)    //只生成一次
            {
                btnX_Click(sender, e);
            }
        }

        /// 
        /// 通用按鈕點擊選項卡 在選項卡上顯示對應的窗體
        /// 
        private void btnX_Click(object sender, EventArgs e)
        {
            string formClass = ((TabControl)sender).SelectedTab.Tag.ToString();

            //string form = tabControl1.SelectedTab.Tag.ToString();

            GenerateForm(formClass, sender);

        }


        //在選項卡中生成窗體
        public void GenerateForm(string form, object sender)
        {
            // 反射生成窗體
            Form fm = (Form)Assembly.GetExecutingAssembly().CreateInstance(form);

            //設置窗體沒有邊框 加入到選項卡中
            fm.FormBorderStyle = FormBorderStyle.None;
            fm.TopLevel = false;
            fm.Parent = ((TabControl)sender).SelectedTab;
            fm.ControlBox = false;
            fm.Dock = DockStyle.Fill;
            fm.Show();

            s[((TabControl)sender).SelectedIndex] = 1;

        }
    }
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved