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]);

      实现效果如下:

        

        

  • 相关阅读:
    jquery实现选项卡(两句即可实现)
    常用特效积累
    jquery学习笔记
    idong常用js总结
    织梦添加幻灯片的方法
    LeetCode "Copy List with Random Pointer"
    LeetCode "Remove Nth Node From End of List"
    LeetCode "Sqrt(x)"
    LeetCode "Construct Binary Tree from Inorder and Postorder Traversal"
    LeetCode "Construct Binary Tree from Preorder and Inorder Traversal"
  • 原文地址:https://www.cnblogs.com/swjian/p/6929321.html
Copyright © 2011-2022 走看看