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 = ; //默认选中第一个
- }
- }
其次给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 = -;
- }
- }
- }
获取选中下拉的问本值:
- comboBox1.GetItemText(comboBox1.Items[comboBox1.SelectedIndex]);
实现效果如下:
C# 根据Combobox控件来动态显示TabControl下的子元素的更多相关文章
- ExtJS基础知识总结:自定义日历和ComboBox控件(二)
概述 1.ExtJS 5不支持日期选择框中只选择年月,为了满足ExtJs5可以实现选择年月的功能,查询网上资料,整理出来了相应的处理方式,最终实现的效果如下图: 2.ExtJS 控件丰富,如果需要实现 ...
- 加载ComboBox控件
/// <summary> /// 加载公司 /// </summary> /// <param name="cbbCompany">Combo ...
- C#中combobox 控件属性、事件、方法
一 .combobox 属性.事件.方法公共属性 名称 说明 AccessibilityObject 获取分配给该控件的 AccessibleObject. AccessibleDefaultActi ...
- .Net平台Winform两个ComboBox控件绑定同一个数据源
今天WINFROM编程遇到这么一个问题:是有关WINFORM中两个comboBox控件绑定同一个数据源的问题,在窗体的界面上有两个comboBox,我在Form1_Load中对他们做了数据绑定(具体代 ...
- WinForm编程时窗体设计器中ComboBox控件大小的设置
问题描述: 在VS中的窗体设计器中拖放一个ComboBox控件后想调整控件的大小.发现在控件上用鼠标只能拖动宽度(Width)无法拖动(Height). 解决过程: 1.控件无法拖动,就在属性窗口中设 ...
- Winform ComboBox控件高亮显示
//重绘下拉表单窗口,需要在窗口设计代码中加入下面这一句 this.cmdChannelName.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawF ...
- winform combobox控件绑定 分类: WinForm 2014-04-17 14:34 118人阅读 评论(0) 收藏
想要达到的效果:把数据库中的一列数据绑定到combobox控件中. 数据库表:T_Task//任务表 列名:Task_Name//名称 主键:Task_ID combobox控件名称:cbName 解 ...
- ComboBox控件绑定数据源
最近在研究机房收费系统的组合查询的方法时,看到了ComboBox控件可以进行数据绑定,我觉得这个功能真的很不错,可以给我省去很多的麻烦. 下面是我组合查询窗体界面 一.数据转换方法 现在我们开看一下我 ...
- WPF中实现多选ComboBox控件
在WPF中实现带CheckBox的ComboBox控件,让ComboBox控件可以支持多选. 将ComboBox的ItemsSource属性Binding到一个Book的集合, public clas ...
随机推荐
- python list初始化技巧
一维列表 # 初始化递增的list,与L = [i for i in range(10)] 效果相同 L = range(10) # print(L) # [0,1,2,3,4,5,6,7,8,9] ...
- 在Laravel中使用mongoDB
https://blog.csdn.net/weixin_38682852/article/details/80840678?utm_source=blogxgwz1 https://blog.csd ...
- 151. Reverse Words in a String翻转一句话中的单词
[抄题]: Given an input string, reverse the string word by word. Example: Input: "the sky is blue& ...
- [leetcode]51. N-QueensN皇后
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...
- php之$_SESSION的理解
1.什么是session? Session的中文译名叫做“会话”,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个sessi ...
- angular模拟web API
现象:angular Cannot find module 'angular-in-memory-web-api'报错找不动“angular-in-memory-web-api”模块 解决:1.控制台 ...
- BZOJ1026或洛谷2657 [SCOI2009]windy数
BZOJ原题链接 洛谷原题链接 简单的数位\(DP\),套模板就好. #include<cstdio> #include<cstring> using namespace st ...
- [JAVA]JAVA章2 IOC与AOP是啥
使用Spring框架的过程中,其实就是为了使用IOC(依赖注入),和AOP(面向切面编程),这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式. IOC就是典型的工厂模式,通过ses ...
- 深入理解JVM(三)垃圾收集器和内存分配策略
3.1 关于垃圾收集和内存分配 垃圾收集和内存分配主要针对的区域是Java虚拟机中的堆和方法区: 3.2 如何判断对象是否“存活”(存活判定算法) 垃圾收集器在回收对象前判断其是否“存活”的两个算法: ...
- bootstrap添加遮罩层loadingmask
转自:https://blog.csdn.net/baidu_30809315/article/details/83900255 gif动态图下载地址:http://blog.sina.com.cn/ ...