Fork me on GitHub
上一页 1 2 3 4 5 6 7 8 9 10 ··· 24 下一页
摘要: 从System.Text.Json诞生,就在努力增加功能和提升性能,在.NET7中,又带来了多态的适配。 下面是一个父类Customer,两个子类,WechatCustomer和LineCustomer。 public class Customer { public string Name { ge 阅读全文
posted @ 2023-02-11 15:03 桂素伟 阅读(647) 评论(0) 推荐(0)
摘要: 在C#中,有int16,用short来定义;有int32,用int定义;用int64,用long来定义。在.NET7中,添加了int128,和unint128,位数更大的整型。 var i16 = short.MaxValue; Console.WriteLine($"Int16(short):{i 阅读全文
posted @ 2023-02-09 20:50 桂素伟 阅读(70) 评论(0) 推荐(0)
摘要: 还是先看看C#中属性的这定义,在初始化和访问上有哪些方式,就能看出required属性有什么不一样的地方了。 属性,是封装字段的,通过get和set访问器可以很好地验证数据的有效性。 public record Order_00 { public Guid Id { get; set; } priv 阅读全文
posted @ 2023-02-09 20:45 桂素伟 阅读(220) 评论(0) 推荐(0)
摘要: 下面汇总了一些VisualStudio“靓点”,有的可能你已经天天在用,用来提升生产力了,不过仍希望本篇对你有所收获。 数值类型格式化 为了看大数值类型方便,C#可以用下划线来分隔一组一组,方便查看。 转时间格式提示 当把时间转成一种格式时,ToString()的参数可以提示这些格式的具体含义。 正 阅读全文
posted @ 2023-02-09 20:38 桂素伟 阅读(62) 评论(0) 推荐(0)
摘要: 本文是“.NET Conf China 2022”上我的一个分享,这里更细化的分享出来。 分享分为四个部分: 制定指示 设计应用 正确测试 性能优化 高性能:不一定是架构出来的,但一定是优化出来的。 制定指标-收集首先把项目中的热路径API和核心API找出来,然后分析每个API是CPU密集型的,还是 阅读全文
posted @ 2023-02-08 20:09 桂素伟 阅读(70) 评论(0) 推荐(0)
摘要: 在WinForm中,有很多添加和修改数据的场景,一般的做法是当点击“添加”按钮时,收集各控件的值,然后赋值给实体类的各个属性,然后再完成保存工作。在修改时,首先把实体的原值,一个个赋值给控件,修改保存时,再反过来把值赋给实体,最后持久化保存。 除了这种做法,用绑定也是可以完成数据的分发和收集,绑定可 阅读全文
posted @ 2023-02-08 20:01 桂素伟 阅读(142) 评论(0) 推荐(0)
摘要: 在很多WinForm的程序中,会有客户端之间相互通信的需求,或服务端与客户端通信的需求,这时就要用到TCP/IP的功能。在.NET中,主要是通过Socket来完成的,下面的例子是通过一个TcpListerner作为监听,等待TcpClient的连接,连接成功后就可以利用NetStream进行信息互通 阅读全文
posted @ 2023-02-07 21:29 桂素伟 阅读(107) 评论(0) 推荐(0)
摘要: 在桌面程序里,一般日志记录到文件里就可以了,但有的时间,也需要在窗体上动态滚动显示,这时,就需要引入日志框架了。 这里引入的依旧是NLog(在我的Mini API系统里,用的也是NLog)。首先要从Nuget中引入NLog.Windows.Forms,然后添加NLog.config,设置“始终复制” 阅读全文
posted @ 2023-02-07 21:23 桂素伟 阅读(289) 评论(0) 推荐(0)
摘要: WebView是WinForm框架中一个控件,用来对网页信息交互,有时Web自己开发的,有时Web是三方的。 下面通过一个例子来看看WebView2的使用。 首先看Web的逻辑,是一个商品添加页面,用AlpineJS和BootStrap来开发的,业务上点击添加按钮,弹出modal框窗,然后保存结果, 阅读全文
posted @ 2023-02-07 21:18 桂素伟 阅读(888) 评论(0) 推荐(0)
摘要: 在.NET中,画图主要是通过Graphics类实现的,这个类主要通过两类方法完成画图,一类是DrawXXX,画各种线条图形;另一类是FillXXX,用各种形状,填充各种图形。Graphics是画板,Draw各个方法是各种盏笔(不过在调用Draw方法时,参数需要一个Pen对象),Fill的各个方法就是 阅读全文
posted @ 2023-02-07 21:10 桂素伟 阅读(268) 评论(0) 推荐(0)
摘要: winform+api是一种对接数据模式,在本例中,为了方便,开发两个天生具有与后台api对接的用例控件,并且把他们封闭成单独控件,以供多次使用。 提示:此实例不是生产使用,仅作演示,有不完善地方,重点关注流程和自定义控件。 本例为API Server,用户控件项目,使用控件项目。 API Serv 阅读全文
posted @ 2023-02-07 21:05 桂素伟 阅读(233) 评论(0) 推荐(0)
摘要: 看到下面的项目结构,是否曾经相识?不要笑,这也是一种项目结构,极简主义。 项目结构没有对错,合适就好,但也要有几个要求,至少要做到结构明确,清晰,当然上图的结构清晰,但不明确,不知道各个Form是做什么的。 那么至少要给各个文件准确命名,不管命名规则如何,只要统一,明确就行,比如下面的图。 三层 窗 阅读全文
posted @ 2022-12-15 21:54 桂素伟 阅读(169) 评论(0) 推荐(0)
摘要: 由于WinForm的UI是绘制的,所以在加载大量数据数据时会有一定的延时,本篇就讨论几个减少延时的方法。 在加载有规律数据时,可以考虑用递归,简单方便快捷来加载数据,如下,把一个文件夹下的所有文件或文件夹加载到树形菜单上,以树形展示,代码实现如下。 var rootPath = "d://abc/b 阅读全文
posted @ 2022-12-15 21:43 桂素伟 阅读(118) 评论(0) 推荐(0)
摘要: 我们在控件那篇文章里说过,窗体和控件都是一个类,项目中一个个窗体,都是Form类的子类。关于这个类有几个重要的成员,也是最常用成员,以供初学者了解: Load事件:发生在构造函数后,Shown事件前,这个事件的生命周期内,窗体是不可视化的。 Shown事件:当窗体发生前窗体有轮廓画出,事件结束后整个 阅读全文
posted @ 2022-12-13 20:48 桂素伟 阅读(252) 评论(0) 推荐(0)
摘要: 在WinForm项目中,很多时候会映遇上多线程一起工作的情况,因为当前UI的更新显示,是在主线程中,一但主线程被长时运算占据后,UI就会被卡信,出现假死现像。那么就需要起一个新线程做长时运算工作,把进度或数据同步回UI线程。 以一个医保上传数据为例,功能是同步药品,器械,诊疗项目,同步完后进行验证核 阅读全文
posted @ 2022-12-13 20:39 桂素伟 阅读(197) 评论(0) 推荐(0)
摘要: WinForm是基于控件的,不像code+mark的架构,可以非常灵活的用mark来布局,它只能用控件布局属性和窗口控件来完成对UI的布局。 容器控件有一组控件叫容器控件,对布局特别有作用,它们分别是:TableLayoutPanel:表格布局面板,每个单元格都可以用来作为其他控件的载体,通过设置行 阅读全文
posted @ 2022-12-11 19:01 桂素伟 阅读(249) 评论(0) 推荐(0)
摘要: 窗体无疑是WinForm的主角,每个窗体都是用一个class来承载,那么窗体的控件,就是类中的私有字段了。每个窗体有三个文件,两个.cs文件,是一个分部类,Designer.cs是自动生成的C#代码,一般是拖拽控件后生成的代码;另一个.cs文件是写业务代码用的;第三个是.resx文件,是资源文源,窗 阅读全文
posted @ 2022-12-11 18:49 桂素伟 阅读(133) 评论(0) 推荐(0)
摘要: 首先声明,这只是一种登录方式,并不是最好的方式,用这个例子为了说明登录窗体和Application的关系。 在登录前,定义了用户实体,然后是一个通用的类,存放进程中当前登录的用户,所以CurrentUser是静态类。 internal class User { public int ID { get 阅读全文
posted @ 2022-12-11 18:36 桂素伟 阅读(187) 评论(0) 推荐(0)
摘要: WinForm所见即所得的UI设计框架,开发效率确实有所提升,同时降低了编程门槛,让WinForm更普及。拖拖拽拽就能设计出一个界面,那么我们拖拽的这些东西是什么?它们是什么原理?。 WinForm我觉得很好的一点是,把所有东西都对像化(毕竟C#是面向对象的语言),包括可视化的窗体,控件等,当然有的 阅读全文
posted @ 2022-12-10 10:52 桂素伟 阅读(224) 评论(0) 推荐(0)
摘要: 基本上有独立进程的应用,都是以Main函数作为入口,开始运行的。在C#中,Main函数可以无参无返回值,当然也可以是有string[]参数和int返返回值的。WinFrom也满足这个规则。 那么Main作为一个进程的开始函数,那么是谁传这些参数呢?然后又是谁来接收这个返回值呢?显然不可能是进程本身, 阅读全文
posted @ 2022-12-10 10:43 桂素伟 阅读(261) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 10 ··· 24 下一页