但做着做着发现,其实复杂界面就那么几个,编程中用的比较多的还是用户输入界面,尤其是这种交互式单输入界面,比如这种:
于是开始了下一个
觉醒阶段针对上面那种单输入界面,我针对性的提取了一个它们的共同点

然后编码的时候,指定好对应的数据:
WeiLan.Win.Lib.UserInputForm form = new WeiLan.Win.Lib.UserInputForm("交付对话框", "用户名", "", "接收者拥有该源码的所有权利,包含但不限于:修改代码、推广、销售、分发、交付他人、授权给他人使用等\n");
可以达到目的。
但做着做着我发现,还有更复杂一些的数据录入界面,比如跟配置、数据库相关的:
这种不仅有单行输入框,还有下拉框、多行输入框等多种输入形式,上面的那种单输入方式就无法胜任了,于是再次进化:
完善阶段于是针对这些界面形式,我重新设计框架:
编码时指定更加复杂却又简单的指令:
UserInputsForm form = new UserInputsForm("规则对话框",new UserInputsEntity() { LabelName = "名称:", ControlName = "Caption", Type = UserInputsControlType.TextBox, DefaultValue = rule.Caption },new UserInputsEntity() { LabelName = "编码:", ControlName = "Number", Type = UserInputsControlType.TextBox, DefaultValue = rule.Number },new UserInputsEntity() { LabelName = "所属分类:", ControlName = "Category", Type = UserInputsControlType.ComboBox, Dictionarys = dictionaries, DefaultValue = rule.CategoryId.ToString() },new UserInputsEntity() { LabelName = "运行平台:", ControlName = "Platform", Type = UserInputsControlType.ComboBox, Dictionarys = dics_platform, DefaultValue = rule.Platform },new UserInputsEntity() { LabelName = "界面形式:", ControlName = "UIType", Type = UserInputsControlType.ComboBox, Dictionarys = dics_ui, DefaultValue = rule.UIType },new UserInputsEntity() { LabelName = "最低运行版本:", ControlName = "MinAppVersion", Type = UserInputsControlType.TextBox, DefaultValue = rule.MinAppVersion },new UserInputsEntity() { LabelName = "排序:", ControlName = "ShowOrder", Type = UserInputsControlType.TextBox, DefaultValue = rule.ShowOrder },new UserInputsEntity() { LabelName = "规则简介:", ControlName = "Summary", Type = UserInputsControlType.TextArea, Height = 80, DefaultValue = rule.Summary });
恩,如此这般就完成了稍微复杂一点各种界面的适应。
然后做着做着,我的欲望也在膨胀,既然界面生成可以如此便利,我为什么不能囊括更多的控件呢?比如文件选择框、目录选择框、按钮等等。
事实上,很多控件的要求都一样的。
于是乎,我再次改进代码,成为了现在的模样:
成熟阶段新的生成方式不局限于窗体了,控件也是可以的,这样我就可以应用在任何窗体了,无论是独立弹窗的,还是内嵌到某个位置的。界面上就这一个自定义控件
代码上增加文件选取这种形式
考虑到按钮是直接与事件处理相关的,再通过界面转一次反而增加麻烦,所以按钮界面生成和事件绑定,还是使用比较原始的方式。最终界面效果如下:
通用的界面生成都进化成这种形式,这样的做的好处:
1、节约大量界面开发和调试时间,80%的用户界面交互都可以胜任;
2、界面、风格一致。这些界面都是由同一批代码动态生成的;
看有人评论说06年就有winform低代码框架了,那能说明啥呢?要按这个逻辑,5000年前猴子就吃食了,结果你现在改吃屎了?
我做这个对我有如下好处:
一是这个可以提高我的生产力;
二是这个基于.Net 6的;
三是虽说这个是基于WinForm,但理论上也可以扩展到WebForm,只不过UI上要做大量工作;
四是我自己写的,怎么用着舒服就怎么改,不受任何约束;
五是别人写的再NB,那也是别人的,我自己写的再垃圾,那我也有绝对的版权;
有时间就自己写点东西,比在我这喷有意义的多。