Winform 高分辨率模糊的问题

在开发界面,控件、字体都是清晰的,但是运行起来,就模糊了: 这个问题的根本原因,是在显示器是高分辨率的时候, Windows 默认对软件界面进行了 125% 的缩放: 不信你把 125% 改成 100% ,winform 程序就不模糊了。但是这样一改,所有的界面都会变小,阅读起来就比较费力。 解决办法有两个: 一 1,修改 exe 的属性 -> 兼容性 -> 更改高DPI设置,把 “替代高DPI缩放行为” 勾选上(选择“应用程序”): 这样系统就会对这个程序执行单独的缩放策略。 二、 […]

Castle IOC:Windsor (二)

前言 在 Castle IOC:Windsor (一)中,引入了 IOC ,实现了最基本的控制反转,为了由浅入深的理解 IOC ,把接口和实现的注册,直接放在了主方法里。 实际的开发中,肯定不能这么做,这样做跟直接耦合没有多大差别。 这一章记录一下怎么把注册部分,放在配置文件中,真正发挥 IOC 的优势。 一,配置文件编写规则  

一文看懂 interface、abstract、virtual

前言 网上随处可见 “接口和抽象类的区别”、“抽象方法和虚方法的区别”、“接口与虚方法的区别” 等等类似的文章,我也曾经为之困惑,看了不少这样的文章,但是前面看后面忘,没有作用。 也是巧合,有一天忽然明白了语言设计者的设计思路,对这些问题的理解就很清晰了。 我的看法是,不要说接口、抽象类、抽象方法、虚方法有啥区别,理解了 interface、abstract、virtual 的作用,他们的区别自然就浮出水面了。 interface 这个关键字,放在类的名字前面作修饰符,表示声明一个 “接口(类) […]

C# 接口的正确使用方式

前言 之前写过一个 “接口” 的笔记: https://www.runner.ink/2018/08/04/csharp-interface/ 里面记录了对 “接口” 这一语法的基本规则和用途,随着码龄的增长,对 “接口“ 这一基本语法有了新的认识和理解。 大学的时候学的是嵌入式,用 C 语言,面向过程编程,导致我用了很长时间才对 “面向对象” 有所顿悟。 对接口进行编程 一,确认场景 我们需要一台复印机,这个复印机有一个功能:复印。 二、分析对象 创建一个复印机对象,“复印” 这个功能可以分为 […]

C# event 关键字的作用

前言 之前写过有关委托、事件、订阅的笔记,但是坦白地说,含有装逼的成分。传送门: C# 发布-订阅模式 C#委托和事件 上面的例子中,用到了 event 关键字,实际上也确实要用 event 关键字,但是不清楚 event 的作用。 那 event 到底有啥作用 根据我现在知道的,就一个作用:让委托只能由事件源触发,而不允许别的地方通过函数调用的方式触发。 新建一个控制台程序,写一个简单的例子。如下所示: 定义一个 Reader 类,类里定义了一个委托类型 ReadHandler ,返回值为 v […]