首页 » 99链接平台 » 一个WinForm程序界面生成的不断进化(界面生成进化程序做着)

一个WinForm程序界面生成的不断进化(界面生成进化程序做着)

admin 2024-11-16 15:20:54 0

扫一扫用手机浏览

文章目录 [+]

但做着做着发现,其实复杂界面就那么几个,编程中用的比较多的还是用户输入界面,尤其是这种交互式单输入界面,比如这种:

于是开始了下一个

觉醒阶段

针对上面那种单输入界面,我针对性的提取了一个它们的共同点

一个WinForm程序界面生成的不断进化(界面生成进化程序做着) 99链接平台
(图片来自网络侵删)

然后编码的时候,指定好对应的数据:

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,那也是别人的,我自己写的再垃圾,那我也有绝对的版权;

有时间就自己写点东西,比在我这喷有意义的多。

标签:

相关文章