zoukankan      html  css  js  c++  java
  • C# 根据Combobox控件来动态显示TabControl下的子元素

      根据下来列表来动态显示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.Hello World
    1.Hello World
    1.Hello World
    32.IDEA新建MAVEN项目时速度缓慢
    31.最特殊的快捷键 Alt + Enter 介绍(新用户必看)
    HelloWorld
    mybatis要指定参数再数据库中的类型,类型要全大写
    递归函数,修改全局变量,高阶函数
    不定长参数
    函数返回值return,列表字典的拆包
  • 原文地址:https://www.cnblogs.com/swjian/p/6929321.html
Copyright © 2011-2022 走看看