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

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

maynowei9个月前 (09-18)技术知识112

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

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

相关文章

Go 语言中的 RWMutex 源码解析、使用场景及应用分析

Go 语言标准库的 sync 包提供了一些非常重要的并发原语来帮助程序开发者处理并发任务。本文将详细解析 sync 包中的 RWMutex,即读写互斥锁(Reader/Writer Mutex),并结...

如何正确理解Java领域中的并发锁,我们应该具体掌握到什么程度?

苍穹之边,浩瀚之挚,眰恦之美; 悟心悟性,善始善终,惟善惟道! —— 朝槿《朝槿兮年说》写在开头对于Java领域中的锁,其实从接触Java至今,我相信每一位Java Developer都会有这样的一个...

c++ 继承简介(c++继承的概念)

24.1 — 继承简介2024 年 6 月 5 日在上一章中,我们讨论了对象组合,即从更简单的类和类型构建复杂类。对象组合非常适合构建与其部分具有“has-a”关系的新对象。但是,对象组合只是 C++...

不需安装oracleclient连接oracle数据库方案

在Oracle官方发布ODP.net之前,我们通常使用微软的System.data.OracleClient进行Oracle数据库操作,它的缺点是必须要装Oracle客户端OracleClient,如...

LabVIEW实现Oracle数据库的访问(labview数据库查询界面)

1. 安装 Oracle 客户端下载:从 Oracle 官方网站下载适用于 Windows 操作系统的 Oracle 驱动程序。确保下载的版本与 LabVIEW 环境和操作系统兼容。1)以 Windo...

Oracle数据库云服务系列新增前所未有的企业级功能

新推出的关键任务型功能包括:实现容错可用性和按需可扩展性的集群;零数据丢失灾难恢复;Oracle数据库Exadata云服务。甲骨文还宣布推出一项最新免费数据库云服务,数据库管理员和开发人员通过该服务可...