读书人

动态生成控件( 怎么把代码写的更好一点

发布时间: 2012-12-22 12:05:06 作者: rapoo

动态生成控件( 如何把代码写的更好一点 不要太多的if else)
需求动态构建控件 并根据相应类型赋予默认值
如果写死代码 就是一堆的 if else if else 写完感觉有点想吐..
请大家帮忙出出注意 该怎么规划 比较利于扩展 该用哪些设计模式? 构造者? 抽象工厂

伪代码如下

// 控件有三个属性

1 控件类型 (暂时只用文本框TextBox,下拉条ComboBox,日期框,单选框)
2 默认值类型(枚举) (纯文本,SQL语句,文本用逗号切割)
3 值内容(string)



//------------------------------------------------
//如果控件是文本框(TextBox)
//{
/*
1 默认值类型是纯文本 如值=(销售部,财务部,人事部)
控件.Text = 值

2 默认值类型是SQL语句 (第一行第一列数据) 如值 = (select count(1) from 部门)

控件.Text = 20

3 默认值类型是文本用逗号切割
返回第一个切割值 如值 = (销售部,财务部,人事部)
控件.Text = 销售部
* */

// }

//------------------------------------------------

//如果控件是下拉框(ComboBox) 默认值模式只能是SQL或者切割字符串 绑定items 项
//{
/*
1 默认值类型是纯文本 如值=(销售部,财务部,人事部)
控件.Text = 值
this.comboBox1.Items.AddRange(new object[] { "销售部,财务部,人事部" });

2 默认值类型是SQL语句 如值 DataTable dt = (select 部门名称 from 部门)

this.comboBox1.DataSource= dt

3 默认值类型是文本用逗号切割
this.comboBox1.Items.AddRange(值.Split(',');
*/
//}

//------------------------------------------------

//如果控件是日期框 默认值是文本 强转为日期时间型赋值 如果是SQL 默认值返回第一行第一列强转

//{
/*
1 默认值类型是纯文本 如值不能强转为 日期时间型报错

2 默认值类型是SQL语句 返回(第一行第一列数据) 如值不能强转为日期时间型报错

3 默认值类型是文本用逗号切割 返回第一个切割值 如值不能强转为日期时间型报错

*/
//}

[最优解释]
本帖最后由 bdmh 于 2012-12-04 13:22:06 编辑 做一个接口,再做一个基类,继承自接口,这个类再派生几个分别用以处理不同类型控件的类,你前台只需要根据控件类型创建对应接口就行
还有一个东西你也可以用,那就是反射,你可以GetType去获取属性值
[其他解释]
引用:
本帖最后由 bdmh 于 2012-12-04 13:22:06 编辑
做一个接口,再做一个基类,继承自接口,这个类再派生几个分别用以处理不同类型控件的类,你前台只需要根据控件类型创建对应接口就行
还有一个东西你也可以用,那就是反射,你可以GetType去获取属性值


做成类就可
[其他解释]
。。。让别人帮你写代码啊
CheckBox cb = new CheckBox();
cb.Text= ((bus)M_attribute.BusArray[i]).ToString();
cb.Font = new Font("宋体", 9F, FontStyle.Bold);
cb.Checked = false;
cb.Location = new System.Drawing.Point(cbx, cby);

cb.Size = this.checkBox1.Size;
cb.Name = 第一行第一列数据;
cb.CheckedChanged += new System.EventHandler(this.Checkcount);
this.Controls.Add(cb);
[其他解释]
switch(控件类型)
case"TextBox":
//执行你要的操作

breadk;

------其他解决方案--------------------


回味 1楼2楼中..

引用:
。。。让别人帮你写代码啊


没看懂我的意思 我不是要写代码 死代码我也会写

引用:
switch(控件类型)
case"TextBox":
//执行你要的操作

breadk;


switch 和 if else 没什么区别..

读书人网 >C#

热点推荐