本文作者注:这个方案并不是我想出来的,我只是造轮子。感谢原作者!好东西还是要拿出来的分享的!
在很多项目里面,因为客户需求不断的变化,程序也不得不断的修改,对于Winform项目而言,修改意味着什么?回想普通Winform程序,界面要修改?简单,打开VS修改界面编译程序发布不就OK了?但是,如果你的最终用户很多分布在不同的部门,不同的部门处在不同的地方,这个发布所带来的成本就越来越大了。自动更新(其它文章中再介绍我在用的一套方案)是一个不错的方案,但有没有比这个更好?答案是有的。
界面设计器只是这种类似方案的其中一个,其它不说先上实际项目中的图:
图1生成效果
图2设计时效果
原理解释:
其实不用多说了比较简单的原理,
1. 设计时保存控件 类型、位置、大小的XML描述;
2. 在界面产生时读取XML,判断类型创建控件,把位置、大小等代码类似如:
switch (ctrl.CtrlKind)
{
case EditCtrlKind.Label:
Label lbl = new Label();
lbl.Text = ctrl.Text;
lbl.Bounds = bounds;
lbl.BorderStyle = borderStyle;
break;
case EditCtrlKind.TextBox:
TextBox txtBox = new TextBox();
txtBox.Bounds = bounds;
txtBox.BorderStyle = borderStyle;
break;
}
3. 保留(待后补充)