C# 根据Combobox控件来动态显示TabControl下的子元素

简介:   根据下来列表来动态显示TabControl下的元素    需要准备两个控件:Combobox (命名为:cbPrjType)和 TabControl (命名为:tabPrjType),TabControl下面有六个子元素分别是:tabPage1,tabPage2,tabPage3,tabPag...

  根据下来列表来动态显示TabControl下的元素

    需要准备两个控件:Combobox (命名为:cbPrjType)和 TabControl (命名为:tabPrjType),TabControl下面有六个子元素分别是:tabPage1,tabPage2,tabPage3,tabPage4,tabPage5,tabPage6

  我们可以想到加载界面的时候会给cbPrjType绑定元素,代码如下:

        private void InitProjectTypeDic()           //绑定下拉值
        {
            string strMsg = "";
            CorpProjectAddClass cpas = new CorpProjectAddClass();
            dsDic = cpas.GetDicDataSet(out strMsg);     //查询定义的字典表
            if (dsDic.Tables["XMBL_TbProjectTypeDic_SZ"] != null)
            {
                this.cbPrjType.Items.Clear();       //清空集合元素
                this.cbPrjType.Items.Add(new MyItem("", ""));       //为第一个option添加为空
                foreach (DataRow dr in dsDic.Tables["XMBL_TbProjectTypeDic_SZ"].Rows)
                {
                    this.cbPrjType.Items.Add(new MyItem(dr["ProjectTypeNum"].ToString(), dr["ProjectTypeName"].ToString())); 
                }
                this.cbPrjType.DisplayMember = "Name";      //显示的属性(显示)
                this.cbPrjType.ValueMember = "ID";          //选项中实际的值(隐藏)
                this.cbPrjType.SelectedIndex = 0;           //默认选中第一个
            }
        }

  其次给cbPrjType添加改变下拉事件SelectedIndexChanged:

     private void cbPrjType_SelectedIndexChanged(object sender, EventArgs e)
        {
            string cbVal="";    //记录当前选中下拉的值 
            if (cbPrjType.SelectedItem != null && (cbPrjType.SelectedItem as MyItem).ID != "")  
                cbVal = (cbPrjType.SelectedItem as MyItem).Name;        //获取选中下拉的值
            else
                return; 

            this.tabPage1.Parent = null;        //指定tabPage1的父元素为空(可实现隐藏作用)
            this.tabPage2.Parent = null;
            this.tabPage3.Parent = null;
            this.tabPage4.Parent = null;
            this.tabPage5.Parent = null;
            this.tabPage6.Parent = null;

            JempType(cbVal);    //传入选中的值,从而判断显示哪个tabPage   
        }

  根据选中元素的值来进行判断:

 

     private void JempType(string prjType)
        {
            switch (prjType)
            {
                case "城市道路工程":
                    this.tabPage1.Text = "城市道路工程";      //tabPage显示的名称
                    this.tabPage1.Parent = tabPrjType;        //给tabPage指定父元素
                    tabPrjType.Enabled = true;          
                    break;

                case "城市桥梁工程":
                    this.tabPage2.Text = "城市桥梁工程";
                    this.tabPage2.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;

                case "排水管道":
                    this.tabPage3.Text = "排水管道";
                    this.tabPage3.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "供水管道":
                    this.tabPage3.Text = "供水管道";
                    this.tabPage3.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "中水管道":
                    this.tabPage3.Text = "中水管道";
                    this.tabPage3.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "燃气管道":
                    this.tabPage3.Text = "燃气管道";
                    this.tabPage3.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "热力管道":
                    this.tabPage3.Text = "热力管道";
                    this.tabPage3.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;

                case "污水处理厂":
                    this.tabPage4.Text = "污水处理厂";
                    this.tabPage4.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "供水厂":
                    this.tabPage4.Text = "供水厂";
                    this.tabPage4.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "给水泵站":
                    this.tabPage4.Text = "给水泵站";
                    this.tabPage4.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "排水泵站":
                    this.tabPage4.Text = "排水泵站";
                    this.tabPage4.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "垃圾处理工程":
                    this.tabPage4.Text = "垃圾处理工程";
                    this.tabPage4.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;

                case "城市隧道工程":
                    this.tabPage5.Text = "城市隧道工程";
                    this.tabPage5.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;

                case "公共交通工程":
                    this.tabPage6.Text = "公共交通工程";
                    this.tabPage6.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "轨道交通工程":
                    this.tabPage6.Text = "轨道交通工程";
                    this.tabPage6.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "环节卫生工程":
                    this.tabPage6.Text = "环节卫生工程";
                    this.tabPage6.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "照明工程":
                    this.tabPage6.Text = "照明工程";
                    this.tabPage6.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "绿化工程":
                    this.tabPage6.Text = "绿化工程";
                    this.tabPage6.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "电力工程":
                    this.tabPage6.Text = "电力工程";
                    this.tabPage6.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
                case "通信工程":
                    this.tabPage6.Text = "通信工程";
                    this.tabPage6.Parent = tabPrjType;
                    tabPrjType.Enabled = true;
                    break;
            } 
       
        }

  如果想循环遍历TabContorl下所有的TextBox控件并赋值为空可以这么写:

    foreach (TabPage page in tabControl1.TabPages)
    {
        foreach (Control control in page.Controls)
        {
             if (control is TextBox)
             {
                 ((TextBox)control) "";
             }
             if (control is ComboBox)
             {
                 ((ComboBox)control).SelectedIndex = -1;
             }
        }
    }  

   获取选中下拉的问本值:

comboBox1.GetItemText(comboBox1.Items[comboBox1.SelectedIndex]);

 

  实现效果如下:

    

    

 

目录
相关文章
|
1月前
|
SQL 开发框架 .NET
C#一分钟浅谈:数据绑定与数据源控件
在Web开发中,数据绑定和数据源控件是实现动态网页的关键技术。本文从基础概念入手,详细讲解数据绑定的原理及其在ASP.NET中的应用,并介绍常见数据绑定方式:手动绑定和自动绑定。接着,文章重点介绍了ASP.NET中的数据源控件,如`SqlDataSource`、`ObjectDataSource`、`XmlDataSource`和`LinqDataSource`,并通过具体示例演示如何使用`SqlDataSource`和`GridView`进行数据绑定。最后,还列举了一些常见问题及其解决办法,帮助读者更好地理解和应用这些技术。
65 4
|
3月前
|
C#
|
25天前
|
C# Python
使用wxpython开发跨平台桌面应用,对wxpython控件实现类似C#扩展函数处理的探究
【10月更文挑战第30天】使用 `wxPython` 开发跨平台桌面应用时,可以通过创建辅助类来模拟 C# 扩展函数的功能。具体步骤包括:1. 创建辅助类 `WxWidgetHelpers`;2. 在该类中定义静态方法,如 `set_button_color`;3. 在应用中调用这些方法。这种方法提高了代码的可读性和可维护性,无需修改 `wxPython` 库即可为控件添加自定义功能。但需要注意显式调用方法和避免命名冲突。
|
5月前
|
索引
详细解读c#ListBox控件
详细解读c#ListBox控件
39 0
|
6月前
|
SQL 存储 Oracle
C# Web控件与数据感应之 Control 类
C# Web控件与数据感应之 Control 类
|
6月前
|
SQL 存储 C#
C# Web控件与数据感应之 TreeView 类
C# Web控件与数据感应之 TreeView 类
|
6月前
|
SQL 存储 Oracle
C# Web控件与数据感应之 CheckBoxList 类
C# Web控件与数据感应之 CheckBoxList 类
|
6月前
|
SQL 存储 Oracle
C# Web控件与数据感应之 ListControl 类
C# Web控件与数据感应之 ListControl 类
|
6月前
|
JavaScript 前端开发 C#
C# webbrowser控件设置代理IP访问网站
C# webbrowser控件设置代理IP访问网站
386 5
|
6月前
|
C# Windows
49.c#:StatusStrip 控件
49.c#:StatusStrip 控件
145 1
49.c#:StatusStrip 控件