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

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

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

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

 

 

[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.    }  
public partial class Form5 : Form { public Form5() { InitializeComponent(); } private void Form5_Load(object sender, EventArgs e) { TreeNode root = new TreeNode("电话缴费"); root.Name = "root"; treeView1.Nodes.Add(root); TreeNode tnMobile = new TreeNode("中国移动"); tnMobile.Name = "mobile"; root.Nodes.Add(tnMobile); TreeNode tnUnion = new TreeNode("中国联通"); tnUnion.Name = "union"; root.Nodes.Add(tnUnion); root.Expand(); } private TabPage tbMobile = null; private TabPage tbUnion = null; private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { if (treeView1.SelectedNode.Name=="mobile") { if (ErgodicModiForm("tbmobile", tabControl1)) { tbMobile = new TabPage("中国移动"); tbMobile.Name = "tbmobile"; tabControl1.Controls.Add(tbMobile); Form6 form = new Form6(); form.TopLevel = false; form.BackColor = Color.White; form.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; form.FormBorderStyle = FormBorderStyle.None; form.Show(); tbMobile.Controls.Add(form); } tabControl1.SelectedTab = tbMobile; } else if (treeView1.SelectedNode.Name=="union") { if (ErgodicModiForm("tbunion", tabControl1)) { tbUnion = new TabPage("中国联通"); tbUnion.Name = "tbunion"; tabControl1.Controls.Add(tbUnion); Form2 form = new Form2(); form.TopLevel = false; form.BackColor = Color.White; form.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; form.FormBorderStyle = FormBorderStyle.None; form.Show(); tbUnion.Controls.Add(form); } tabControl1.SelectedTab = tbUnion; } } /// </summary> /// <param name="MainTabControlKey">选项卡的键值</param> /// <param name="objTabControl">要添加到的TabControl对象</param> /// <returns></returns> private Boolean ErgodicModiForm(string MainTabControlKey, TabControl objTabControl) { //遍历选项卡判断是否存在该子窗体 foreach (Control con in objTabControl.Controls) { TabPage tab = (TabPage)con; if (tab.Name == MainTabControlKey) { return false;//存在 } } return true;//不存在 } }

 

 

转载于:https://www.cnblogs.com/Echo529/p/6382461.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值