博客园 - Lee's Blog
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=44769
2017-03-13T08:41:51Z
Lee's Blog
https://www.cnblogs.com/dingli/
feed.cnblogs.com
https://www.cnblogs.com/dingli/p/6531729.html
.net 下的集合 - Lee's Blog
集合的操作在编码的时候很常见。但是由于经常使用几种集合。而忽略了一些不常用的集合。在这里我整理下。 首先先了解下接口: 1、IEnumerable,返回一个循环访问集合的枚举器。 2、IEnumerable<T>,返回一个循环访问指定集合T的枚举器。 3、ICollection,在IEnumerab
2017-03-13T08:37:00Z
2017-03-13T08:37:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】集合的操作在编码的时候很常见。但是由于经常使用几种集合。而忽略了一些不常用的集合。在这里我整理下。 首先先了解下接口: 1、IEnumerable,返回一个循环访问集合的枚举器。 2、IEnumerable<T>,返回一个循环访问指定集合T的枚举器。 3、ICollection,在IEnumerab <a href="https://www.cnblogs.com/dingli/p/6531729.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/p/4563766.html
C#模拟百度登录 - Lee's Blog
目录:1、fiddler解析百度登录地址2、处理传入参数1、fiddler解析百度登录地址因工作需要,所以研究了下百度的登陆。首先打开https://passport.baidu.com/v2/?login,我们用fiddler很快就能找到百度的登录入口https://passport.baidu....
2015-06-09T08:54:00Z
2015-06-09T08:54:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】目录:1、fiddler解析百度登录地址2、处理传入参数1、fiddler解析百度登录地址因工作需要,所以研究了下百度的登陆。首先打开https://passport.baidu.com/v2/?login,我们用fiddler很快就能找到百度的登录入口https://passport.baidu.... <a href="https://www.cnblogs.com/dingli/p/4563766.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/p/3805936.html
Windows metro app wcf 地址可配置 - Lee's Blog
在Windows metro app中调用wcf服务可以通过添加 “服务引用”来实现。一旦项目发布则不可修改。这个和桌面开发不一样。现在我们通过读取文本的方式来读取wcf地址。1、添加所需引用的wcf 地址。2、添加完之后。自动生成的Reference.cs里面我们可以看到private stati...
2014-06-24T06:02:00Z
2014-06-24T06:02:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】在Windows metro app中调用wcf服务可以通过添加 “服务引用”来实现。一旦项目发布则不可修改。这个和桌面开发不一样。现在我们通过读取文本的方式来读取wcf地址。1、添加所需引用的wcf 地址。2、添加完之后。自动生成的Reference.cs里面我们可以看到private stati... <a href="https://www.cnblogs.com/dingli/p/3805936.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/p/3259769.html
WPF 将PPT,Word转成图片 - Lee's Blog
在Office下,PowerPoint可以直接把每张幻灯片转成图片,而Word不能直接保存图片。所以只能通过先转换成xps文件,然后再转成图片。一、PPT 保存为图片 /// /// 将ppt转成图片 /// /// private void SaveToImages(string fileName) { var presentation = _application.Presentations.Open(fileName, MsoTriState.msoFalse, MsoTriState.ms...
2013-08-15T07:20:00Z
2013-08-15T07:20:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】在Office下,PowerPoint可以直接把每张幻灯片转成图片,而Word不能直接保存图片。所以只能通过先转换成xps文件,然后再转成图片。一、PPT 保存为图片 /// /// 将ppt转成图片 /// /// private void SaveToImages(string fileName) { var presentation = _application.Presentations.Open(fileName, MsoTriState.msoFalse, MsoTriState.ms... <a href="https://www.cnblogs.com/dingli/p/3259769.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/p/3259611.html
WPF 打印控件 无弹框打印。 - Lee's Blog
WPF中打印用到了 PrintDialog类。其中设置打印属性的是PrintTicket,管理打印机的是PrintQueue。实例如下:public class PrintDialogHelper { private const string PrintServerName = "YULIN-PC"; private const string PrintName = "HP LaserJet M1522 series PCL6 Class Driver"; public PrintDialogHelper() { } ...
2013-08-15T06:11:00Z
2013-08-15T06:11:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】WPF中打印用到了 PrintDialog类。其中设置打印属性的是PrintTicket,管理打印机的是PrintQueue。实例如下:public class PrintDialogHelper { private const string PrintServerName = "YULIN-PC"; private const string PrintName = "HP LaserJet M1522 series PCL6 Class Driver"; public PrintDialogHelper() { } ... <a href="https://www.cnblogs.com/dingli/p/3259611.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/p/3187217.html
c# 获取屏幕DPI - Lee's Blog
方法一:用ManagementClass来获取。需要引入System.Management.dll; using (ManagementClass mc = new ManagementClass("Win32_DesktopMonitor")) { using (ManagementObjectCollection moc = mc.GetInstances()) { int PixelsPerXLogicalInch = 0; // dpi for x ...
2013-07-12T12:21:00Z
2013-07-12T12:21:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】方法一:用ManagementClass来获取。需要引入System.Management.dll; using (ManagementClass mc = new ManagementClass("Win32_DesktopMonitor")) { using (ManagementObjectCollection moc = mc.GetInstances()) { int PixelsPerXLogicalInch = 0; // dpi for x ... <a href="https://www.cnblogs.com/dingli/p/3187217.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2013/03/29/2988710.html
Git 版本控制常用功能 - Lee's Blog
目录 工具 安装事项 本地密码保存 Git常用使用操作 如何管理我们的版本及分支 工具 开源的一款版本控制器Git深受大家喜欢。下面我归纳下用Git开发需要哪些东西。 客户端: 1、msysgit 是Window平台下的功能软件 下载地址 https://code.google.com/p/msysgit/downloads/list?q=fu...
2013-03-29T05:32:00Z
2013-03-29T05:32:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】目录 工具 安装事项 本地密码保存 Git常用使用操作 如何管理我们的版本及分支 工具 开源的一款版本控制器Git深受大家喜欢。下面我归纳下用Git开发需要哪些东西。 客户端: 1、msysgit 是Window平台下的功能软件 下载地址 https://code.google.com/p/msysgit/downloads/list?q=fu... <a href="https://www.cnblogs.com/dingli/archive/2013/03/29/2988710.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2013/02/27/2935172.html
委托使用不当导致内存变大 - Lee's Blog
1、Bar(() => Foo()) 2:Bar(Foo) 这两个委托你认为哪个好?很多人会写成第二种方法。因为简洁,而且Resharper也提示我们写成第二种方法。但问题也在这里。下面做一个测试 public void LambdaVersion() { for (var i = 0; i < 10000; i++) { Bar(() => Foo()); } } public void NormalVersion() { ...
2013-02-27T06:48:00Z
2013-02-27T06:48:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】1、Bar(() => Foo()) 2:Bar(Foo) 这两个委托你认为哪个好?很多人会写成第二种方法。因为简洁,而且Resharper也提示我们写成第二种方法。但问题也在这里。下面做一个测试 public void LambdaVersion() { for (var i = 0; i < 10000; i++) { Bar(() => Foo()); } } public void NormalVersion() { ... <a href="https://www.cnblogs.com/dingli/archive/2013/02/27/2935172.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2013/01/06/2847171.html
WPF TextBox输入显示提示 - Lee's Blog
在网上支付输入银行卡的时候,经常看到输入的数字会放大和提示。 下面是WPF版的一个例子。 Code public class ZoomTextTooltip : FrameworkElement { public object ZoomText { get { return (object)GetValue(ZoomTextProperty...
2013-01-06T02:17:00Z
2013-01-06T02:17:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】在网上支付输入银行卡的时候,经常看到输入的数字会放大和提示。 下面是WPF版的一个例子。 Code public class ZoomTextTooltip : FrameworkElement { public object ZoomText { get { return (object)GetValue(ZoomTextProperty... <a href="https://www.cnblogs.com/dingli/archive/2013/01/06/2847171.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2012/09/15/2686066.html
分享一个Metro风格的程序 - Lee's Blog
目录前言环境项目结构总结前沿最近在学微软的RX,这个基于异步和事件的类库。RX是由Observables+Linq+Schedulers 组成。它的优势在于处理I/O操作的时候,能够很好的处理异步操作。于是出于练习,做了一个进销存系统,至于为什么选进销存系统。因为前段时间博客园里的园友都分享了一些进销存的开源软件。环境这个系统运用了 Autofac,Caliburn.micro,RXUI,NHibernate。用了Autofac来管理我的程序的生命周期(这边占时简单的运用了)。Caliburn.micro 管理ViewModel和View,主要是它的Screen Activation Life
2012-09-15T02:51:00Z
2012-09-15T02:51:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】目录前言环境项目结构总结前沿最近在学微软的RX,这个基于异步和事件的类库。RX是由Observables+Linq+Schedulers 组成。它的优势在于处理I/O操作的时候,能够很好的处理异步操作。于是出于练习,做了一个进销存系统,至于为什么选进销存系统。因为前段时间博客园里的园友都分享了一些进销存的开源软件。环境这个系统运用了 Autofac,Caliburn.micro,RXUI,NHibernate。用了Autofac来管理我的程序的生命周期(这边占时简单的运用了)。Caliburn.micro 管理ViewModel和View,主要是它的Screen Activation Life <a href="https://www.cnblogs.com/dingli/archive/2012/09/15/2686066.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2012/09/10/2679076.html
WPF 验证 - Lee's Blog
目录:ValidationRule 验证Exception 验证IDataErrorInfo 验证Custom Control 验证1、ValidationRule 验证ValidationRule:是通过ValidationRule中的的Validate方法来验证我们绑定的属性。所以我们的用法是继承ValidationRule,重写他的Validate方法。示例public class RequiredRule : ValidationRule { public override ValidationResult Validate(object value, Cultur...
2012-09-10T09:35:00Z
2012-09-10T09:35:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】目录:ValidationRule 验证Exception 验证IDataErrorInfo 验证Custom Control 验证1、ValidationRule 验证ValidationRule:是通过ValidationRule中的的Validate方法来验证我们绑定的属性。所以我们的用法是继承ValidationRule,重写他的Validate方法。示例public class RequiredRule : ValidationRule { public override ValidationResult Validate(object value, Cultur... <a href="https://www.cnblogs.com/dingli/archive/2012/09/10/2679076.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2012/06/14/2548687.html
DynamicObject 在WPF 中的应用 - Lee's Blog
在.Net Framework 4引入了dynamic关键字。它是在运行时才确定对象的类型。在运行的时候确定类型的好处是,少了一些装箱,拆箱操作。WPF中也有动态对象概念,那就是DynamicObject,它继承于IDynamicMetaObjectProvider这个接口。DynamicObject这个类能实现动态的给属性赋值和取值。它提供给我们两个TrySetMember和TryGetMember方法。我们只要重写这两个方法,来设置我们需要的属性。我们自定义一个DynamicBindingProxy泛型类:public class DynamicBindingProxy<T>
2012-06-13T16:20:00Z
2012-06-13T16:20:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】在.Net Framework 4引入了dynamic关键字。它是在运行时才确定对象的类型。在运行的时候确定类型的好处是,少了一些装箱,拆箱操作。WPF中也有动态对象概念,那就是DynamicObject,它继承于IDynamicMetaObjectProvider这个接口。DynamicObject这个类能实现动态的给属性赋值和取值。它提供给我们两个TrySetMember和TryGetMember方法。我们只要重写这两个方法,来设置我们需要的属性。我们自定义一个DynamicBindingProxy泛型类:public class DynamicBindingProxy<T> <a href="https://www.cnblogs.com/dingli/archive/2012/06/14/2548687.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2012/06/07/2540928.html
Reactive Extensions 初识 - Lee's Blog
目录:简介示例结论在.NET 4.0中多了一个IObservable和IObserver接口。用MSDN的话说是:基于推送的通知的提供程序。相当拗口。个人理解就是属性发生变化时,订阅该属性的方法得到通知。就是观察者模式的定义。示例:现在有A和B。他们输入值后得到C。只要A和B有一个输入,C就会发生变化。我用观察者模式来写 A输入了值。C发生了变化: public enum Bit { Low = 0, High = 1 } public interface IInput { void SetValue(Bit bit); } ...
2012-06-07T13:08:00Z
2012-06-07T13:08:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】目录:简介示例结论在.NET 4.0中多了一个IObservable和IObserver接口。用MSDN的话说是:基于推送的通知的提供程序。相当拗口。个人理解就是属性发生变化时,订阅该属性的方法得到通知。就是观察者模式的定义。示例:现在有A和B。他们输入值后得到C。只要A和B有一个输入,C就会发生变化。我用观察者模式来写 A输入了值。C发生了变化: public enum Bit { Low = 0, High = 1 } public interface IInput { void SetValue(Bit bit); } ... <a href="https://www.cnblogs.com/dingli/archive/2012/06/07/2540928.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2012/06/05/2536968.html
Reactive Extension - Lee's Blog
目录:1、Timer:设定Obervable执行时间间隔。2、Enumerable to Observable转换3、Observable to Enumerable 转换4、zip 匹配的两个序列合并操作,返回一个合并后的值5、Buffer 缓存集合6、TimeOut 超出预订时间,取消订阅事件。当超出时间后可以Catch这个异常。7、Merge 合并两个Observable8、CombineLatest 最近输入的两个数字相比较9、Publish 共享订阅事件10、Interval 订阅事件的时间间隔11、Group 分组1、Timer:设定Obervable执行时间间隔。Subscrib
2012-06-05T09:05:00Z
2012-06-05T09:05:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】目录:1、Timer:设定Obervable执行时间间隔。2、Enumerable to Observable转换3、Observable to Enumerable 转换4、zip 匹配的两个序列合并操作,返回一个合并后的值5、Buffer 缓存集合6、TimeOut 超出预订时间,取消订阅事件。当超出时间后可以Catch这个异常。7、Merge 合并两个Observable8、CombineLatest 最近输入的两个数字相比较9、Publish 共享订阅事件10、Interval 订阅事件的时间间隔11、Group 分组1、Timer:设定Obervable执行时间间隔。Subscrib <a href="https://www.cnblogs.com/dingli/archive/2012/06/05/2536968.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2012/05/29/2524172.html
一个Metro风格的开源项目 MahApps.Metro - Lee's Blog
目录: Metro风格控件 Metro主题 MahApps.Metro文档地址:http://mahapps.com/MahApps.Metro/ 源码地址:https://github.com/MahApps/MahApps.Metro 在VS中可以装一个NuGet插件来下载MahApps.Metro.dll和MahApps.Metro.Resources.dll。 Ma...
2012-05-29T08:36:00Z
2012-05-29T08:36:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】目录: Metro风格控件 Metro主题 MahApps.Metro文档地址:http://mahapps.com/MahApps.Metro/ 源码地址:https://github.com/MahApps/MahApps.Metro 在VS中可以装一个NuGet插件来下载MahApps.Metro.dll和MahApps.Metro.Resources.dll。 Ma... <a href="https://www.cnblogs.com/dingli/archive/2012/05/29/2524172.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2012/02/06/2340596.html
Visual Studio 编译时,如何管理生成的DLL - Lee's Blog
在用Visual Studio 开发时,少不了会引用其他类库的源码。一般引用类库有两种方法。1、直接引用项目。2、引用项目生成路径的dll。现在如果有两个项目 ProjectA和ProjectB。ProjectA引用ProjectB。问题1:在第二种方法中,那么编译ProjectA的时候就会把ProjectB的dll考到ProjectA的bin(默认)文件夹中。现在有个需求是,我想把ProjectB项目考过来的dll放到ProjectA项目Bin文件夹下的某一个文件夹dll,那么我们只要在ProjectA项目属性中=》生成事件=》后期生成事件命令行中添加命令:move /y $(TargetD
2012-02-06T13:32:00Z
2012-02-06T13:32:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】在用Visual Studio 开发时,少不了会引用其他类库的源码。一般引用类库有两种方法。1、直接引用项目。2、引用项目生成路径的dll。现在如果有两个项目 ProjectA和ProjectB。ProjectA引用ProjectB。问题1:在第二种方法中,那么编译ProjectA的时候就会把ProjectB的dll考到ProjectA的bin(默认)文件夹中。现在有个需求是,我想把ProjectB项目考过来的dll放到ProjectA项目Bin文件夹下的某一个文件夹dll,那么我们只要在ProjectA项目属性中=》生成事件=》后期生成事件命令行中添加命令:move /y $(TargetD <a href="https://www.cnblogs.com/dingli/archive/2012/02/06/2340596.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2011/11/29/2268251.html
.NET装饰器(Decorator)模式 - Lee's Blog
目录 定义 UML 参与者 示例 定义: 装饰者模式:动态的给一个对象,增加一些额外的功能。 UML: 这张UML图中可以看出,Component是一个抽象出来的组件或接口,有了两个类(ConcreteComponent和Decorator)实现了它。 这里可以看出Decorator可以产生 好几个子类,这些子类的创建 不会影响到原来的ConcreteComponent类。耦合性降低了。 ...
2011-11-29T12:57:00Z
2011-11-29T12:57:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】目录 定义 UML 参与者 示例 定义: 装饰者模式:动态的给一个对象,增加一些额外的功能。 UML: 这张UML图中可以看出,Component是一个抽象出来的组件或接口,有了两个类(ConcreteComponent和Decorator)实现了它。 这里可以看出Decorator可以产生 好几个子类,这些子类的创建 不会影响到原来的ConcreteComponent类。耦合性降低了。 ... <a href="https://www.cnblogs.com/dingli/archive/2011/11/29/2268251.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2011/11/25/2263818.html
.NET策略(Strategy)模式 - Lee's Blog
目录 定义 UML 参与者 示例 定义: 对算法的封装,是算法和责任分离。 UML: 参与者: 抽象策略(Strategy)角色:由一个接口或抽象类,定义实现该算法的方法。 具体策略(ContreteStrategy)角色:实现抽象角色算法的具体类。 环境(Context)角色:对策略角色的调用。 示例: 代码using System; namespace DoFactory.Gang...
2011-11-25T13:39:00Z
2011-11-25T13:39:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】目录 定义 UML 参与者 示例 定义: 对算法的封装,是算法和责任分离。 UML: 参与者: 抽象策略(Strategy)角色:由一个接口或抽象类,定义实现该算法的方法。 具体策略(ContreteStrategy)角色:实现抽象角色算法的具体类。 环境(Context)角色:对策略角色的调用。 示例: 代码using System; namespace DoFactory.Gang... <a href="https://www.cnblogs.com/dingli/archive/2011/11/25/2263818.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2011/11/24/2262197.html
.NET责任链(Chain)模式 - Lee's Blog
目录 定义 UML 参与者 示例 定义: 责任链模式是一种对象的行为模式。比如:来了一个请求,A类先处理,如果没有处理,就传递到B类处理,如果没有处理,就传递到C类处理,就这样象一个链条(chain)一样传递下去。 UML: 参与者: 1、抽象处理者角色(Handler): 定义出一个处理请求的接口。 2、具体处理者角色(ConcreteHandler): 具体处理者接到请求后,可以选择将请...
2011-11-24T11:57:00Z
2011-11-24T11:57:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】目录 定义 UML 参与者 示例 定义: 责任链模式是一种对象的行为模式。比如:来了一个请求,A类先处理,如果没有处理,就传递到B类处理,如果没有处理,就传递到C类处理,就这样象一个链条(chain)一样传递下去。 UML: 参与者: 1、抽象处理者角色(Handler): 定义出一个处理请求的接口。 2、具体处理者角色(ConcreteHandler): 具体处理者接到请求后,可以选择将请... <a href="https://www.cnblogs.com/dingli/archive/2011/11/24/2262197.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/dingli/archive/2011/11/23/2260875.html
.NET 代理(Proxy)模式 - Lee's Blog
目录 定义: 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 UML: 参与者: 抽象主题(Subject)角色: 声明了代理主题和真实主题的公共接口,使任何需要真实主题的地方都能用代理主题代替. 具体主题(RealSubject)角色: 实现抽象主题角色的具体对象。 代理主
2011-11-23T14:24:00Z
2011-11-23T14:24:00Z
Lee's Blog
https://www.cnblogs.com/dingli/
【摘要】目录 定义: 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 UML: 参与者: 抽象主题(Subject)角色: 声明了代理主题和真实主题的公共接口,使任何需要真实主题的地方都能用代理主题代替. 具体主题(RealSubject)角色: 实现抽象主题角色的具体对象。 代理主 <a href="https://www.cnblogs.com/dingli/archive/2011/11/23/2260875.html" target="_blank">阅读全文</a>