C#開發 WinForm如何在選項卡中整合載入多個表單 實現表單複用詳解

來源:互聯網
上載者:User
最近需要做的一個項目,為了避免從菜單中選擇的麻煩,需要把幾個表單整合到一起,通過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);            }        }        /// <summary>        /// 通用按鈕點擊選項卡 在選項卡上顯示對應的表單        /// </summary>        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;        }    }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.