当前位置:首页 > 技术知识 > 正文内容

C#动态生成控件_c# 动态创建对象

maynowei6个月前 (09-18)技术知识58

在一些场景下,我们需要根据条件在画面上动态生成控件。比如某些时候,我们的数据查询条件不是固定的,它需要根据配置文件里面的信息动态生成筛选条件。那么我们就需要在程序运行时先读取配置信息,然后根据配置信息里面的文本条目,在窗体上动态生成CheckBox。勾选CheckBox则此条件有效,反之则无效。下图演示了配置文件。


下面代码演示了读取配置文件并动态生成CheckBox的过程。

//获取配置文件里面的文本条目
var lst= Infrastructure.INIOperationClass.INIGetAllItems(Infrastructure.CommData.ConfigPath, "Area");
for(int i = 0; i < lst.Length; i++)
 {
     CheckBox ce = new CheckBox();
    //用配置文件里面的文本条目命名控件以及显示的文本
     ce.Name = lst[i];
     ce.Text = lst[i];
     ce.Checked = false;
     //控件位置
     ce.Left = 20;
     ce.Top = i * 20 + i * 6;
     ce.Width = 200;
     //对控件勾选的事件响应
     ce.CheckedChanged += Ce_CheckedChanged;
     //添加控件到Panel
     P1.Controls.Add(ce);
    //根据控件数量动态修改窗体高度,避免窗体尺寸失调
}
this.Height = lst.Length * 26 + 40;

运行程序,我们可以看到窗体加载后的效果。

当然我们还需要响应CheckBox的选择事件。代码如下。

private void Ce_CheckedChanged(object sender, EventArgse)
{
     if (sender is CheckBox)
     {
        CheckBox chk = sender as CheckBox;
        if (chk.Checked) MessageBox.Show(#34;你选择了{chk.Name}");
        if (!chk.Checked) MessageBox.Show(#34;你取消了{chk.Name}");
    }
 }

上面的代码首选判断控件是否为CheckBox,然后根据是否勾选弹出不同的信息。程序运行后勾选或不勾选CheckBox就会弹出对应的窗口。

实际项目会根据具体要求在事件里面编写业务代码,这里仅做演示。动态生成控件的方式会使应用程序的灵活性大大增强。

相关文章

网络安全常用术语(网络安全常用术语介绍)

黑客帽子之分白帽白帽:亦称白帽黑客、白帽子黑客,是指那些专门研究或者从事网络、计算机技术防御的人,他们通常受雇于各大公司,是维护世界网络、计算机安全的主要力量。很多白帽还受雇于公司,对产品进行模拟黑客...

有了这份900多页的Android面试指南,你离大厂Offer还远吗?

前言对于大部分程序员来说,一线互联网是的工作经历是毕生的追求,实际上大厂对于学历的要求远远没有我们想象的那么高,近几年来,互联网公司更注重技术,所以提升自身技术水平才是斩获offer的制胜关键。一线互...

Android主流UI开源库整理(android完整开源项目)

前言最近老大让我整理一份 Android主流UI开源库 的资料,以补充公司的Android知识库。由于对格式不做特别限制,于是打算用博客的形式记录下来,方便查看、防丢并且可以持续维护、不断更新。标题隐...

Oracle标准化部署手册(oracle19c客户端)

很久之前写过一篇11g的windows安装手册, 这次是19c的windows安装手册,面向没有数据库安装部署经验的开发人员或想学习数据库的新手。希望能给想从事dba的入门人员小小的帮助。 毕竟每个高...

6 张图带你彻底搞懂分布式事务 XA 模式

XA 协议是由 X/Open 组织提出的分布式事务处理规范,主要定义了事务管理器 TM 和局部资源管理器 RM 之间的接口。目前主流的数据库,比如 oracle、DB2 都是支持 XA 协议的。mys...

Oracle 11g安装教程完整版(oracle 11g 安装教程)

由于工作需要,将安装的经验分享给大家。第一步:首先准备安装文件包:Oralce 11.2.0.4 64bit和plsqldev1405x64如图所示:第二步:将2个文件解压到同一个目录,如图所示:第三...