|>> 官方网站: http://www.xizhang.com 微博:http://weibo.com/chenxizhang

陈希章@中国

:: 心有多宽,路就有多宽 :: | :: http://tech.xizhang.com :: Microsoft .NET开发人员职业规划和学习路线图::

导航

统计

公告

03 2010 档案

如何实现单实例的MDI子窗体
摘要: 这也是前两天课程中的案例。讨论的是,MDI子窗体是否也可以实现单实例阅读全文

posted @ 2010-03-29 12:29 陈希章 阅读(177) | 评论 (0) 编辑

由object不能比较引发的问题
摘要: 这是一个小问题,请看下面的代码这样我们就实现了比较了,我们分别对两个object去获取HashCode,这个方法返回的是int,既然是int当然就可以比较了。那么,也就是说其实任何类型都可以通过实现G...阅读全文

posted @ 2010-03-29 12:25 陈希章 阅读(171) | 评论 (2) 编辑

Reporting Service本地报表(rdlc)的两种方式
摘要: rdlc其实是一个XML文件,这种报表必须通过ReportViewer才能显示出来。 一般有两种方式来使用它们 1. 如果不希望在程序发布之后去修改它们,例如我们程序自带的一些统计报表,我们不希望用户...阅读全文

posted @ 2010-03-29 12:04 陈希章 阅读(311) | 评论 (0) 编辑

一个通用的报表显示窗口(WindowsForms)
摘要: 这也是这两天课堂上的一个范例。我们考虑到有很多报表,不可能为所有的报表单独定义一个窗口来显示,所以最后重构成一个通用的窗口 后台代码主窗体调用代码窗体显示的大致效果如下阅读全文

posted @ 2010-03-29 11:47 陈希章 阅读(191) | 评论 (0) 编辑

一个自定义的文本框验证器(WindowsForms)
摘要: 这也是前两天在课堂上的一个案例,我们实现了自定义的文本框验证器。这是一个实现了IExtenderProvider 的组件。该范例部分代码改编自MSDN 这个验证组件,可以为窗体上任意多个文本框提供验证...阅读全文

posted @ 2010-03-29 11:27 陈希章 阅读(186) | 评论 (0) 编辑

一个比较完整的WindowsFormsApplication实现
摘要: 这是前两天课堂上的例子,提供了一个自定义WindowsFormsApplication的范例,主要包括如下的功能 1. 单一实例 2. 闪屏 3. 登陆窗口 4. 任务栏图标和菜单 需要注意的是,Wi...阅读全文

posted @ 2010-03-29 11:15 陈希章 阅读(467) | 评论 (1) 编辑

通过编程添加Outlook联系人和通讯组
摘要: 下面代码可以为Outlook添加联系人和通讯组。但要注意,Outlook需要处于打开状态,否则会收到下面的异常从 IClassFactory 为 CLSID 为 {0006F03A-0000-0000-C000-000000000046} 的 COM 组件创建实例失败,原因是出现以下错误: 8001010a。具体原因目前没有搞清楚 OL.Application app = new OL.Appli...阅读全文

posted @ 2010-03-28 23:18 陈希章 阅读(441) | 评论 (0) 编辑

WPF:理解ContentControl——动态添加控件和查找控件
摘要: 我认为WPF的核心改变之一就是控件模型发生了重要的变化,大的方面说,现在窗口中的控件(大部分)都没有独立的Hwnd了。而且控件可以通过所谓的模板提供各种各样的表现形式。 这一篇就来谈一谈Content...阅读全文

posted @ 2010-03-25 11:27 陈希章 阅读(3368) | 评论 (0) 编辑

WPF:Main方法到哪里去了?
摘要: 之前做过Windows Forms开发的朋友一定很熟悉,我们的应用程序都是从Program.cs的一个Main方法开始的,如下图所示 这个Main方法也被称为所谓的“EntryPoint”,也就是说...阅读全文

posted @ 2010-03-25 09:47 陈希章 阅读(691) | 评论 (0) 编辑

WPF:如何实现与WindowsForms程序中类似的NotifyIcon
摘要: 我有一个好消息,也有一个坏消息。请问你要先听好消息还是坏消息呢? 还是先说坏消息吧,Windows Forms提供的控件有相当一部分在WPF中都没有对应的版本,至少目前是这样。关于这个方法的详细信息,...阅读全文

posted @ 2010-03-25 09:46 陈希章 阅读(528) | 评论 (0) 编辑

WPF:如何为程序添加splashScreen?
摘要: 大家是否还记得在Windows Forms程序中如何实现splashScreen吗?我们一般都会使用Microsoft.VisualBasic.dll中提供的那个WindowsFormsApplica...阅读全文

posted @ 2010-03-25 09:45 陈希章 阅读(983) | 评论 (2) 编辑

WPF:如何在工作线程中更新窗体的UI元素(Dispatcher机制)
摘要: 这是一个普遍的问题:如果我们再程序中使用了多线程技术,而工作线程(后台线程)如果需要更新界面上的元素(例如进度条等),就会有一个线程安全性问题,因为进度条是由主线程创建出来的。 关于这一点,大致上看,...阅读全文

posted @ 2010-03-25 09:44 陈希章 阅读(1978) | 评论 (2) 编辑

WPF:如何实现单实例的应用程序(Single Instance)
摘要: 好吧,这是我将WPF与Windows Forms进行比较的系列文章的第四篇,讨论一下如何实现单实例(single instance) 先来看第一种最简单粗暴的做法: 检测进程名,如果名称一样,则表示程序已经启动了,就不再启动.这一种做法的结果与第一种很类似,或者说没有任何区别。看起来解决问题了,但仍然不是很理想的。最好的情况是,当用户开启第二个实例的时候,如果第一个实例没有处于活动状态,则应该激活...阅读全文

posted @ 2010-03-25 09:44 陈希章 阅读(599) | 评论 (0) 编辑

关于私钥加密、公钥加密、签名在生活中的场景
摘要: 1. 私钥加密:也就是对称加密。这种算法采用同一个密钥(Key)对数据进行加密和解密,虽然可以通过设置初始化向量(IV),但因为在加密方和解密方中需要共享这两部分信息,相对而言,它不够安全。 但一般来...阅读全文

posted @ 2010-03-24 08:29 陈希章 阅读(1941) | 评论 (1) 编辑

Convert XElement to XmlNode (and Convert XmlNode to XElement){转载}
摘要: 本文转载自:http://blogs.msdn.com/ericwhite/archive/2008/12/22/convert-xelement-to-xmlnode-and-convert-xml...阅读全文

posted @ 2010-03-24 07:40 陈希章 阅读(344) | 评论 (0) 编辑

new修饰符之惑
摘要: long long ago,是没有new修饰符的。准确的说,这是C#中的一个修饰符。当年学习c#的时候,就记住了它的作用:在子类中隐藏中父类中的同名成员。 但是,其实这种情况很少,难道不是吗?至少我几...阅读全文

posted @ 2010-03-23 22:28 陈希章 阅读(86) | 评论 (0) 编辑

对称加密的例子(DES)——针对文件进行加解密
摘要: 这是是今天课堂上的例子。针对文件的加解密其实与字符串加解密没有大的差别。阅读全文

posted @ 2010-03-22 20:04 陈希章 阅读(203) | 评论 (0) 编辑

对称加密的例子(DES)——直接加密和解密字符串
摘要: 这是在课堂上讲解的一个例子,最简单的对称算法,DES关于该算法的一些说明,有兴趣的朋友可以参考下面的链接http://baike.baidu.com/view/7510.htm static void Main(string[] args) { DES des = DES.Create(); des.Key = Convert.FromBase64String("12345678910="); d...阅读全文

posted @ 2010-03-22 19:50 陈希章 阅读(173) | 评论 (0) 编辑

再谈CLR:事件定义
摘要: 这是今天课堂上的一个话题。如何定义事件,这好像并不是问题,我们习惯性直接用下面的代码定义,不是吗?这样做的话,大致是会怎么编译呢? 其实编译器会帮我们生成两个方法: add_NameChanging和...阅读全文

posted @ 2010-03-21 20:06 陈希章 阅读(173) | 评论 (0) 编辑

再谈CLR:关于类型的拷问
摘要: 1.到底什么是值类型,什么是引用类型? 值类型直接或者间接地继承ValueType类型,它包含的类型主要:内置值类型(除string之外的简单类型,如整型--Int32等),自定义值类型(结构体,st...阅读全文

posted @ 2010-03-21 19:37 陈希章 阅读(118) | 评论 (0) 编辑

如何查找某个特定证书
摘要: 这是昨天课堂上的一个例子。阅读全文

posted @ 2010-03-21 19:02 陈希章 阅读(127) | 评论 (0) 编辑

如何读取计算机上面所有的证书信息
摘要: 这是昨天课堂上一个问题,如何读取到计算机上所有证书的信息呢?我们首先来看一下到底有哪些证书 下面的代码可以通过三个循环找到所有的证书阅读全文

posted @ 2010-03-21 19:02 陈希章 阅读(130) | 评论 (0) 编辑

再谈CLR:构造之谜
摘要: 这一篇谈谈类型构造的问题。主要针对构造器这个层面进行一些探讨。 1. 有哪几种构造器 默认构造器(无参数) 自定义构造器(有参数) 静态构造器 2.何时调用构造器 通过new关键字创建实例的时...阅读全文

posted @ 2010-03-21 19:02 陈希章 阅读(103) | 评论 (0) 编辑

如何在代码中执行应用程序安全性检查(声明式和代码式)
摘要: 这是今天课堂上一个例子,讲解了如何通过代码方式和声明式的方式检查应用程序的安全性。阅读全文

posted @ 2010-03-20 18:39 陈希章 阅读(94) | 评论 (0) 编辑

通过反射得到类型的所有成员
摘要: 下面代码演示了如何通过反射技术得到某个类型的所有成员。需要注意的是,默认情况下,GetMembers方式是只能读取公有成员的,如果需要读取所有的成员,则需要用下面的方式阅读全文

posted @ 2010-03-20 18:18 陈希章 阅读(99) | 评论 (0) 编辑

LINQ to SQL的快速入门例子
摘要: 这也是今天课堂上的一个简单例子,演示了如何使用LINQ to SQL的技术,以及C# 3的一些新特性阅读全文

posted @ 2010-03-20 17:42 陈希章 阅读(177) | 评论 (2) 编辑

自定义TraceListener的例子
摘要: 这是今天课堂上的一个例子,我们实现了一个简单的SQLServerTraceListener阅读全文

posted @ 2010-03-20 17:41 陈希章 阅读(105) | 评论 (0) 编辑

用户验证之自定义身份验证
摘要: 这是今天在课堂上演示的例子代码,自定义身份验证的简单做法是通过GenericPrinciple和GenericIdentity实现,也可以通过自定义Principle和Identity实现。阅读全文

posted @ 2010-03-20 17:38 陈希章 阅读(100) | 评论 (0) 编辑

用户身份验证之Windows验证
摘要: 下面的代码演示了如何在程序中读取用户的Windows身份信息阅读全文

posted @ 2010-03-20 07:52 陈希章 阅读(97) | 评论 (0) 编辑

再谈CLR: .NET 4.0新功能:Mscoree.dll + Mscoreei.dll=更少的Reboot (上)
摘要: 本文转载:http://blogs.msdn.com/silverlightshanghai/archive/2009/09/03/net-4-0-mscoree-dll-mscoreei-dll-r...阅读全文

posted @ 2010-03-19 21:49 陈希章 阅读(395) | 评论 (0) 编辑

再谈CLR:查看程序集的依赖关系
摘要: depends.exe,原先在vs2005是提供的,但是vs2008中却没有了。下面的网站提供了单独下载 从这个图,更加可以看出来.NET的应用程序对mscoree.dll(.NET Framewor...阅读全文

posted @ 2010-03-19 21:33 陈希章 阅读(306) | 评论 (0) 编辑

再谈CLR:目标平台的问题
摘要: 曾经有朋友问到这样的一个问题:我要开发一个能运行在64位机器上的应用程序,是不是应该使用Visual Studio 的64位版本来做? 这是一个似是而非的问题,首先其实Visual Studio 并没...阅读全文

posted @ 2010-03-19 21:13 陈希章 阅读(113) | 评论 (0) 编辑

再谈CLR:CLR的版本
摘要: CLR的版本问题有点让人迷惑。很多朋友甚至没有意识到这个问题,大家经常看到Framework在变版本,例如我们现在用过的版本有 1.0 1.1 2.0 3.0 3.5 但要注意的是,Framewor...阅读全文

posted @ 2010-03-19 19:40 陈希章 阅读(116) | 评论 (0) 编辑

再谈CLR:MSCorEE.dll文件的奥秘
摘要: 这是一个特殊的文件,如果用户的机器安装了.NET Framework ,就有这个文件。它的默认路径在 %systemdrive%\system32 而它就是CLR的运行引擎阅读全文

posted @ 2010-03-19 19:34 陈希章 阅读(137) | 评论 (0) 编辑

再谈CLR:无法避免的装箱
摘要: 大家可以思考下面的代码有几个问题:1. 这几个方法哪些会发生装箱,哪些不会?2. 他们有什么区别吗?要了解这两点,可以通过下面的图形 所以,答案就是,只有第一种没有发生装箱操作。其他三种都发生了。而后...阅读全文

posted @ 2010-03-19 12:08 陈希章 阅读(131) | 评论 (0) 编辑

再谈CLR:值类型按照引用传递(以及与装箱拆箱的区别)
摘要: 经常被问到这样的问题:值类型能不能按引用传递?传递之后又是什么样的处理方式 当然是可以的,不管是现在还是以前都可以。我们来看看下面两个方法的区别 我们知道int是值类型,在第一个方法中,我们按照默认的...阅读全文

posted @ 2010-03-19 11:38 陈希章 阅读(146) | 评论 (0) 编辑

再谈CLR:如何通过代码获取程序集所引用的程序集信息
摘要: 上一篇我们提到过程序集引用的问题,通过反编译工具可以很方便地看到他们的引用关系。如下图所示 那么是否有办法在代码中进行查询得到这些信息呢?答案是肯定的,我们可以通过下面的简单代码就实现了 我们主要用到...阅读全文

posted @ 2010-03-19 10:26 陈希章 阅读(154) | 评论 (0) 编辑

再谈CLR:GAC目录的构造
摘要: 我们一般都知道,.NET Framework的GAC(global assembly cache)其实就是一个特殊的目录,如下图所示 但是它内部到底是什么结构呢? 很奇怪对吧?两个图完全不一样。不要惊...阅读全文

posted @ 2010-03-19 10:05 陈希章 阅读(442) | 评论 (0) 编辑

环境变量(Environment Variable)那点事
摘要: 在Windows编程中,我们可能经常需要用到环境变量。它其实相当于是操作系统级别的一个配置文件。 .NET编程中可以很方便地访问到这些环境变量,下面的代码就演示了这个过程阅读全文

posted @ 2010-03-17 18:03 陈希章 阅读(181) | 评论 (0) 编辑

如何实现多文件下载(实例)
摘要: 有网友看了我之前喜写的多文件下载的文章,想自己实现一个类似的。但遇到困难。我这里准备了一个可以参考的完整的例子。其实不难,我希望这位朋友还是要把基础功夫学好。 1. 页面2. 代码3. 效果 4....阅读全文

posted @ 2010-03-17 11:54 陈希章 阅读(718) | 评论 (2) 编辑

修改应用程序搜索程序集的私有路径
摘要: 这是今天讲课中的一个小例子, 演示了如何添加搜索路径,以便让.NET的应用程序可以搜索到有关的程序集. 因为.NET程序默认只是在自己的根目录和GAC中搜索, 所以添加下面的配置后,就可以实现在plu...阅读全文

posted @ 2010-03-14 19:14 陈希章 阅读(386) | 评论 (0) 编辑

再谈方法的动态调用
摘要: 下面代码是今天课程中,有朋友上台做即席演讲时举的一个例子.这个例子不错,概括了动态调用方法的几种情况,包括静态方法,实例方法,方法重载等等阅读全文

posted @ 2010-03-14 19:06 陈希章 阅读(98) | 评论 (0) 编辑

如何:将 TraceSource 和筛选器与跟踪侦听器一起使用(转载)
摘要: 本文转载:http://msdn.microsoft.com/zh-cn/library/ms228993.aspx .NET Framework 2.0 版中的新功能之一就是增强的跟踪系统。基本的前...阅读全文

posted @ 2010-03-14 07:30 陈希章 阅读(227) | 评论 (0) 编辑

多线程的最佳实践
摘要: 还是那句话,多线程很有用,但并非那么好玩。请使用之前确认你真的掌握了它们 本文请参考:http://msdn.microsoft.com/zh-cn/library/1c9txz50.aspx 有关...阅读全文

posted @ 2010-03-14 06:18 陈希章 阅读(234) | 评论 (0) 编辑

默认情况下程序启动后到底是几个线程?
摘要: 默认情况下,在调试状态下我们可以看到下面的效果 这里面的线程中 主线程 不必多说,就是程序的主要工作线程 SystemEvents线程之前探讨过是系统事件触发之后的工作线程 另外几个线程,很奇怪。但...阅读全文

posted @ 2010-03-13 22:06 陈希章 阅读(197) | 评论 (2) 编辑

SystemEvents和SystemEvents线程
摘要: Microsoft.Win32.SystemEvents类型,简单来说,就是提供了让我们程序监控系统事件的能力,可以参考下面的介绍 那么什么是SystemEvents线程呢?就是说,程序开启之后,默...阅读全文

posted @ 2010-03-13 21:41 陈希章 阅读(138) | 评论 (0) 编辑

线程池(ThreadPool)
摘要: 总结起来说,线程池有如下的特性: 每个进程有一个单独的池,也只有一个 每个池初始的线程数是相当于处理器的数目 每个池默认的最大线程数是处理器数目的25倍 即便所有的线程都不处于空闲状态,但此时又有新...阅读全文

posted @ 2010-03-13 21:15 陈希章 阅读(284) | 评论 (3) 编辑

支持取消操作和暂停操作的Backgroundworker
摘要: 这也是今天讨论的话题。取消是默认就支持的,而暂停则默认不支持。但通过ManualResetEvent可以对其进行干预。 三。恢复状态 作为演示,代码比较简单,没有对worker的一些状态进行判断以及按...阅读全文

posted @ 2010-03-13 19:47 陈希章 阅读(1199) | 评论 (5) 编辑

事件处理程序的处理顺序问题
摘要: 这也是今天讨论到的一个话题,其实还是比较简单的。因为事件处理程序都是在主线程被执行的,所以主线程肯定是依次执行他们。那么究竟是什么决定了这个顺序呢? 其实要深入看的话,这是因为事件的处理程序是通过一个...阅读全文

posted @ 2010-03-13 19:15 陈希章 阅读(173) | 评论 (1) 编辑

关于Thread.IsAlive属性
摘要: 今天在讨论多线程的时候,谈到了这个属性。IsAlive,顾名思义,它表示线程当前是否为可用状态,如果线程已经启动,并且当前没有任何异常的话,则返回true,否则为false 为什么要了解这个属性,是因...阅读全文

posted @ 2010-03-13 18:49 陈希章 阅读(1589) | 评论 (0) 编辑

根据方法名执行方法的例子
摘要: 今天在讲到动态执行方法的时候,我们讨论到了Delegate.CreateDelegate的方法。但也有下面这样的一个更加通用的方法:可以执行任何方法,传递任意个数的参数,而无需定义delegate阅读全文

posted @ 2010-03-13 18:39 陈希章 阅读(124) | 评论 (0) 编辑

Silverlight的跨站策略和跨站策略文件
摘要: 如果我们需要在Silverlight中跨站调用Web Service,则可能会遇到这个问题:默认情况下,Silverlight是不允许你这么做的。那么如何来解决该问题呢,请看Tim下面的这篇文章 ht...阅读全文

posted @ 2010-03-12 08:11 陈希章 阅读(276) | 评论 (0) 编辑

你需要知道的隐式转换操作符
摘要: XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices";我们需要构造一个XNamespace对象,按一般的习惯,我...阅读全文

posted @ 2010-03-12 07:49 陈希章 阅读(108) | 评论 (0) 编辑

Silverlight中使用自定义服务
摘要: Silverlight中,可以通过所谓的自定义服务的方式 ,在后台运行一些特殊功能,例如定期检查远程网站资源等等 。 1. 编写一个自定义服务2. 注册该服务 ,必须在Application对象的构...阅读全文

posted @ 2010-03-11 20:43 陈希章 阅读(80) | 评论 (0) 编辑

Silverlight中的多语言支持中几个特殊之处
摘要: 1. 需要手工修改项目文件才支持多语言,请参考下面文章 http://www.cnblogs.com/KevinYang/archive/2008/11/10/1330305.html 这不得不说是一...阅读全文

posted @ 2010-03-11 18:32 陈希章 阅读(117) | 评论 (0) 编辑

RIA 亮剑行动
摘要: 微软的RIA平台,你了解吗?Silverlight,你用过了吗? 大戏正在上演,不管你是否感觉到,你我都是戏中人,嘿嘿 http://www.microsoft.com/china/expressio...阅读全文

posted @ 2010-03-11 12:45 陈希章 阅读(112) | 评论 (0) 编辑

hello,mono!
摘要: http://mono-project.com/What_is_Mono阅读全文

posted @ 2010-03-11 11:41 陈希章 阅读(65) | 评论 (0) 编辑

Silverlight隔离存储(续)
摘要: 我之前的一篇日记说到了隔离存储的问题,简单而言,它就是提供给Silverlight应用程序可以在用户机器上做一些文件存取的机制 。 事实上,除了我们自己写文件之外,还可以直接利用IsolatedSto...阅读全文

posted @ 2010-03-10 21:13 陈希章 阅读(70) | 评论 (0) 编辑

在Silverlight中读取ADO.NET数据服务的两种方式
摘要: 1。 数据服务的返回数据格式 注意,没有办法通过添加引用的方式调用该服务,估计有安全方面的一些考虑吧 2。因为ADO.NET数据服务是可以直接通过http请求实现,所以下面两个代码都可以完成工作 ...阅读全文

posted @ 2010-03-10 19:32 陈希章 阅读(233) | 评论 (0) 编辑

IE 8 中选项卡通过颜色分组
摘要: 什么是选项卡分组呢?就是说你在某个页面中,打开某个链接的时候,不是直接点击,而是通过右键菜单中选择“在新选项开打开链接”阅读全文

posted @ 2010-03-10 14:48 陈希章 阅读(220) | 评论 (0) 编辑