为什么我觉得WinForm比WPF好用?不要为了UI天天革自己的命

科技   2024-08-08 08:03   北京  

因为Winform够简单、速度足够快,作为生产软件,我们追求的不是界面多么花哨,而是尽可能提高速度,显示更多数据。所以winform是最佳选择,至于控件丑,可以靠自己来实现一套UI库解决问题。

我一直不明白微软,为什么总喜欢来一套全新的方案,然后里面是毛胚,啥都要自己来。为什么总让我学完新东西,然后生产力却没有提升。

开发者要的不多,只是一套完善的UI控件库而已啊,不是让你天天革自己的命!!!!

比如我的ERP软件,功能太多了,订单多开,数据自适配排版,只能靠自己来实现UI库,那同样都是自己画,自然选择速度快的,WPF能做的,Winform都能实现。虽然2024年了,但你永远无法想象,客户的机器有多烂。

从WPF到WebForm,微软特别喜欢让程序员做美工的活,额外学习很多界面的语法。

WPF那么好,那么有多少商业软件是WPF开发的?太多WPF初学者,总喜欢拿练手的项目来说明WPF多么强大,但可惜,稳定、高效、低成本才是工业要求,WPF人都不好招。

就算是炫技,你WPF的所有效果,包括动画,我用winform都能实现,就是时间问题,所以,我没必要废掉自己全部重来,只是一套UI库的事,不需要换框架。

现在都把WPF吹上天,其实它炫是够炫,效率并没有想象那么高。我个人认为:

开发灵活性上 wpf > winform,但开发效率上 winform > wpf,定制灵活,不代表效率高。

要承认 UI 就是一件很专业的事情,觉得可以灵活改造,所以就能做出好界面来?不要欺骗自己,只用现成的控件,每个就算都好看,组在一起也搭配不好。不如简单点、效率高点来得实际。

项目稍大一点,要讲究统一模式,批量生产。我程序几千个表单,用WPF手都要写残了。理论上你可以重用控件,但每个表单都有差异,实际上能重用的不多,还是拖放布局快。

评论区有人说winform代码不好管理,其实我觉得还是旧思维,限制了你的想象力。

Winform要的是所见即所得,包括变量和数据,贴一个我的控件在设计器里的状态。

最省力的排版,是样式统一,流布局(和网页一样),自动排版(我总不能逐个调大小、对齐、调间距吧),绿字是控件名称,红字是控件的Field(赋值字段名),给值只给容器一次,会自动根据Field名把类的字段值给各个控件,按名字赋值,比绑定更灵活,容器套几层都没关系,可以递归逐级向下赋值(或者收集值用于提交),只要Field名字对得上类的字段名(或Attribute属性名,因为可能多个类都要给容器,而它们的字段名都叫Name,不唯一)。

名称粗体表示它是必填项,控件外框是紫色,表示它的值永远提交(否则值改变才会提交)。右侧的小数字,是控件最大内容长度(50表示最长50个字符)

调整次序只需在文档大纲中拖动位置,它会自动在容器中对齐,只靠Margin和Padding来决定间距和位置,虚线框是控件所占范围。

比如 商品视频:这种标注,都是控件的属性了(不再拖Label),右侧的点击链接,全是复合属性,只需要写值,设置Icon就好(可以多个链接,加就是了)。

还有很多其它细节,比如设计时,虚线画外框,表示这个控件Visible设置为false不可见

生产力就是所见即所得(可视化),拖个表单,也就是几分钟的事。排版自动化(xaml是什么鬼,我排个版还要写代码,嫌我头发太长?)

关于代码思想,随便贴一个我自己的ORM框架,可以直写SQL,简单明了。

一句就写完,它的结果是 子公司 和 所有人员(如下图),缓存分析可以全写在框架里,你只要会写SQL,就会写代码(Section和Login这两个表都不需要在一台服务器上,会有边界检查)

新时代,我们更应该注重数据关系(对象的表达太局限了,非要脱离SQL是错误的做法)。

-End-

关心.NET社区大事?学习C#顶阶技术?请加入下述技术讨论群。向大佬学习、探行业内幕、享时代机遇。进名企+拿高新!

点击上方卡片关注公众号
回复'加群',进.NET技术社区交流群
回复'面试',获取C#/.NET/.NET Core面试宝典
回复'C#',领取零基础学习C#编程
回复'NET',领取.NET零基础入门到实战
回复'Linux',领取Linux从入门到精通
回复'wpf',领取高薪热门【WPF上位机+工业互联网】从零手写实战
回复'Modbus',领取初识C#+上位机Modbus通信
回复'PLC',领取C#语言与西门子PLC的通信实操
回复'blazor',领取blazor从入门到实战
回复'TypeScript',领取前端热门TypeScript系统教程
回复'vue',领取vue前端从入门到精通
回复'23P',领取C#实现23种常见设计模式
回复'MongoDB',领取MongoDB实战
回复'Trans',领取分布式事务
回复'Lock',领取分布式锁实践
回复'Docker',领取微服务+Docker综合实战
回复'K8s',领取K8s部署微服务


WPF开发者
「WPF开发者」现役微软MVP,专注 WPF 和 Avalonia 技术分享与传播。
 最新文章