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

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

maynowei7个月前 (09-18)技术知识74

在一些场景下,我们需要根据条件在画面上动态生成控件。比如某些时候,我们的数据查询条件不是固定的,它需要根据配置文件里面的信息动态生成筛选条件。那么我们就需要在程序运行时先读取配置信息,然后根据配置信息里面的文本条目,在窗体上动态生成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就会弹出对应的窗口。

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

相关文章

事半功倍 轻松制作可交互移动原型

写在前面先讲个场景,看看有多少人躺枪,你在一个没有专职的交互设计师的公司做客户端的产品,基本上产品和交互的活儿你全承包了,当你准备好一切需要向领导和项目团队一起讲新版本的设计:做过WEB产品的老手,或...

iOS开发生涯的初恋:详解Objective-C多项改进

CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面。如果您想投稿、参与内容翻译工作,或寻求近匠报道,请发送...

Objective-C :Category(category什么意思)

Category 引入在日常的开发中,可能会碰到这样的需求:给某个类增加方法。比如说,需要给NSString类增加一个打印的方法。当然,我们可以新建一个类比如TestString,并继承NSStrin...

机器人需求驱动导航新SOTA,成功率提升15%!浙大&amp;vivo联手打造

CogDDN团队 投稿量子位|公众号QbitAI让机器人像人一样边看边理解,来自浙江大学和vivo人工智能实验室的研究团队带来了新进展。正如视频所展示的,机器人在复杂的室内环境中不仅能自主探索,还具备...

Android之自定义ListView(一)(android 自定义view绘制流程)

PS:自定义View是Android中高手进阶的路线.因此我也打算一步一步的学习.看了鸿洋和郭霖这两位大牛的博客,决定一步一步的学习,循序渐进.学习内容:1.自定义View实现ListView的Ite...

CPU「离奇」飙到 100%!开发者挖出 Linux 内核 16 年老 Bug:这么多年竟无人发现?

【CSDN 编者按】每一次对旧设备的升级都仿佛是一场跨越时代的冒险。本文作者致力于将基于 PXA166 的 Chumby 8 设备从 Linux 2.6.28 版本升级到现代 6.x 版本,然而,在看...