tabcontrol动态生成选项卡,并且在选项卡中添加窗体

时间:2022-09-16 06:23:16

http://blog.csdn.net/zx13525079024/article/details/6084733

今天在论坛上看到有人问到,如果在点击TRVEVIEW时动态生成tabcontrol的选项卡,并在选项卡中添加窗体,于是写了一个DEMO,供大家参考

 demo下载:http://download.csdn.net/source/2920757

tabcontrol动态生成选项卡,并且在选项卡中添加窗体

 

 

[c-sharp] view plain copy print?
  1. public partial class Form5 : Form  
  2.    {  
  3.        public Form5()  
  4.        {  
  5.            InitializeComponent();  
  6.        }  
  7.   
  8.        private void Form5_Load(object sender, EventArgs e)  
  9.        {  
  10.            TreeNode root = new TreeNode("电话缴费");  
  11.            root.Name = "root";  
  12.            treeView1.Nodes.Add(root);  
  13.   
  14.            TreeNode tnMobile = new TreeNode("中国移动");  
  15.            tnMobile.Name = "mobile";  
  16.            root.Nodes.Add(tnMobile);  
  17.   
  18.            TreeNode tnUnion = new TreeNode("中国联通");  
  19.            tnUnion.Name = "union";  
  20.            root.Nodes.Add(tnUnion);  
  21.            root.Expand();  
  22.   
  23.             
  24.   
  25.        }  
  26.   
  27.         
  28.   
  29.        private TabPage tbMobile = null;  
  30.        private TabPage tbUnion = null;  
  31.        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)  
  32.        {  
  33.              
  34.            if (treeView1.SelectedNode.Name=="mobile")  
  35.            {  
  36.                 
  37.                if (ErgodicModiForm("tbmobile", tabControl1))  
  38.                {  
  39.                     tbMobile = new TabPage("中国移动");  
  40.   
  41.                    tbMobile.Name = "tbmobile";  
  42.                    tabControl1.Controls.Add(tbMobile);  
  43.   
  44.                    Form6 form = new Form6();  
  45.                    form.TopLevel = false;  
  46.                    form.BackColor = Color.White;  
  47.                    form.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;  
  48.   
  49.                    form.FormBorderStyle = FormBorderStyle.None;  
  50.                    form.Show();  
  51.                    tbMobile.Controls.Add(form);  
  52.   
  53.   
  54.                }  
  55.   
  56.   
  57.                tabControl1.SelectedTab = tbMobile;  
  58.            }  
  59.            else if (treeView1.SelectedNode.Name=="union")  
  60.            {  
  61.   
  62.                if (ErgodicModiForm("tbunion", tabControl1))  
  63.                {  
  64.                    tbUnion = new TabPage("中国联通");  
  65.                    tbUnion.Name = "tbunion";  
  66.                    tabControl1.Controls.Add(tbUnion);  
  67.   
  68.                    Form2 form = new Form2();  
  69.                    form.TopLevel = false;  
  70.                    form.BackColor = Color.White;  
  71.                    form.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;  
  72.   
  73.                    form.FormBorderStyle = FormBorderStyle.None;  
  74.                    form.Show();  
  75.                    tbUnion.Controls.Add(form);  
  76.   
  77.   
  78.                      
  79.                }  
  80.                tabControl1.SelectedTab = tbUnion;  
  81.            }  
  82.        }  
  83.   
  84.        /// </summary>  
  85.        /// <param name="MainTabControlKey">选项卡的键值</param>  
  86.        /// <param name="objTabControl">要添加到的TabControl对象</param>  
  87.        /// <returns></returns>  
  88.        private Boolean ErgodicModiForm(string MainTabControlKey, TabControl objTabControl)  
  89.        {  
  90.            //遍历选项卡判断是否存在该子窗体  
  91.            foreach (Control con in objTabControl.Controls)  
  92.            {  
  93.                TabPage tab = (TabPage)con;  
  94.                if (tab.Name == MainTabControlKey)  
  95.                {  
  96.                    return false;//存在  
  97.                }  
  98.            }  
  99.            return true;//不存在  
  100.        }  
  101.    }  
tabcontrol动态生成选项卡,并且在选项卡中添加窗体