C#动态生成控件_c# 动态创建对象
在一些场景下,我们需要根据条件在画面上动态生成控件。比如某些时候,我们的数据查询条件不是固定的,它需要根据配置文件里面的信息动态生成筛选条件。那么我们就需要在程序运行时先读取配置信息,然后根据配置信息里面的文本条目,在窗体上动态生成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就会弹出对应的窗口。
实际项目会根据具体要求在事件里面编写业务代码,这里仅做演示。动态生成控件的方式会使应用程序的灵活性大大增强。