﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-沧海月明.NET</title><link>http://www.cnblogs.com/panjiwen/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 11 Oct 2008 00:53:58 GMT</lastBuildDate><pubDate>Sat, 11 Oct 2008 00:53:58 GMT</pubDate><ttl>60</ttl><item><title>Luna简介</title><link>http://www.cnblogs.com/panjiwen/archive/2007/07/20/825877.html</link><dc:creator>沧海月明</dc:creator><author>沧海月明</author><pubDate>Fri, 20 Jul 2007 10:10:00 GMT</pubDate><guid>http://www.cnblogs.com/panjiwen/archive/2007/07/20/825877.html</guid><wfw:comment>http://www.cnblogs.com/panjiwen/comments/825877.html</wfw:comment><comments>http://www.cnblogs.com/panjiwen/archive/2007/07/20/825877.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/panjiwen/comments/commentRss/825877.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/panjiwen/services/trackbacks/825877.html</trackback:ping><description><![CDATA[在所有基于关系数据库的软件系统中, 有两种数据模式是最常用到的:<br><br>一种我称之为单表, 以微软的NorthWind例子数据库为例, 如Categories表是最基本的模式, 较为复杂一点的是Products表, 它的某些字段是外键, 其值来源于其它表。大部份基本资料适用于这种模式。<br><br>一种我称之为主从表，它的最基本模式由两个有一对多关系的表构成, 如Orders与Order Details。更复杂一点的模式可能是一个主表对应多个从表，或者从表之下又有从表。大部份单据比如入库单、领料单、财务凭证等适用于此种模式。<br><br>我们已经花太多时间去写针对这两种数据模式的<span style="font-weight: bold;">界面设计</span>、<span style="font-weight: bold;">新增修改删除功能实现</span>、<span style="font-weight: bold;">报表设计</span>、<span style="font-weight: bold;">权限管理</span>、<span style="font-weight: bold;">多语言支持</span>等等。这些工作大部份都是重复的机械劳动。<br><br>Luna框架的功能是不需要再为这些做重复工作。开发者定义好数据模型和数据字典后，可以自动生成数据表、中间层代码、客户端界面。同时又可以保留充分的灵活性。开发者可以把绝大部份时间用于写业务逻辑。比如对于一张入库单,开发者需要写的代码是保存/或者审核这张单据时, 同时修改库存数量、库存成本。 <br><br>这样的轮子市面上已经有很多了，但大多总有这样那样的缺点。我终于决定自已也来做一个。<br><br>这个是单表数据模式的界面示例：<br><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/panjiwen/LUNA1.JPG" height="292" width="396"><br>标准工具栏为：新增、查询、编辑、删除、打印、四个位置导航、刷新、保存、撤消编辑。<br><br><br>       <img src ="http://www.cnblogs.com/panjiwen/aggbug/825877.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42930/" target="_blank">[新闻]Silverlight 2.0正式版下周发布</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>MDI窗体的工具栏合并(ToolStrip Merging)的功能实现</title><link>http://www.cnblogs.com/panjiwen/archive/2006/12/23/601873.html</link><dc:creator>沧海月明</dc:creator><author>沧海月明</author><pubDate>Sat, 23 Dec 2006 15:28:00 GMT</pubDate><guid>http://www.cnblogs.com/panjiwen/archive/2006/12/23/601873.html</guid><wfw:comment>http://www.cnblogs.com/panjiwen/comments/601873.html</wfw:comment><comments>http://www.cnblogs.com/panjiwen/archive/2006/12/23/601873.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/panjiwen/comments/commentRss/601873.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/panjiwen/services/trackbacks/601873.html</trackback:ping><description><![CDATA[<br>上篇：<a href="http://www.cnblogs.com/panjiwen/archive/2006/12/23/601421.html">MDI窗体的工具栏合并(ToolStrip Merging)</a><br><br>这个模型的大概构成是这样的：<br>1个MDI主窗体，1～n个MDI子窗体；<br>主窗体上一般会有1个主菜单栏，1～n个主工具栏；<br>子窗体设计时上可能有0～1个主菜单栏，0～1个主工具栏，运行时子窗体的菜单栏和工具栏都显示在主窗体上，与主窗体的菜单栏和工具栏合并。(实际上也许会有多个工具栏，但先简化为一个工具栏的模型，实现了一个工具栏的合并后，要实现多个工具栏合并也并非难事)。<br>对于菜单栏的合并，无论是传统的Windows API编程或者Window Forms，都已经完美地解决了，不再赘述。<br>工具栏合并的过程最好在子窗体的激活和关闭处理处理，一个容易想到的方法是写在子窗体的事件代码中，要么需在每一个子窗体的代码文件写上类似处理的代码，要么让所有子窗体继承自一个写好相关事件处理代码的窗体。前者显然不可取，后者在单根继承的时代，剥夺了子窗体从其它窗体继承的可能，也不是一个好办法。同时还有一个弊端是子窗体要访问主窗体的内容，耦合度太高。<br>最佳方案也自然而然地出来了，即在主窗体的MdiChildActivate事件中处理（不能望文生义以为仅仅是子窗体的激活会触发此事件，事实上子窗体的关闭也会触发此事件）。这个时候应该把主窗体从上一个子窗体合并来的工具栏内容清除掉(如果有的话)，并将新激活的子窗体上的待合并的工具栏内容合并到主窗体的工具栏上(如果新激活的子窗体上无待合并的工具栏内容或者MdiChildActivate是关闭最后一个子窗体触发的时候则无此步)。为简化代码，假设子窗体的工具栏总是合并到主窗体工具栏的最后位置。<br>这时候，主窗体必须知道子窗体的工具栏的构成，完全解耦是不太可能的。一种办法是将子窗体的工具栏控件的作用范围设置为public, 我采取了另外一个办法，就是定义了一个接口，让需合并工具栏的子窗口实现这个接口即可。<br>接口代码如下：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Collections.Generic;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Text;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Windows.Forms;<br><br></span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;Osmanthus.WinForms<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">interface</span><span style="color: #000000;">&nbsp;IToolStripMergableForm<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ToolStrip&nbsp;MergedToolStrip<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">get</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span></div>
让子窗体实现这个接口，所要写的代码也简单，只有一句，即：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;ToolStrip&nbsp;MergedToolStrip<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">get</span><span style="color: #000000;">&nbsp;{&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.toolStrip1;&nbsp;}<br>}</span></div>
剩下的内容似乎理想当然地是写主窗体的MdiChildActivate事件处理代码，不过我想增加重用性，就把它写成了一个组件，以后只要把该组件拖放在MDI主窗体，并设置此组件<span style="color: #000000;">MainToolStrip</span>属性<span style="color: #000000;"></span>为主窗体的工具栏(其实也可以写成自动获取默认属性值，即主窗体上的最后一个ToolStrip控件)，不需对再对主窗体写一行代码。这个部件的代码内容如下（其中为实现组件对Form的存取参照了Chris Sells的大作，我不知道是否有其它的更好办法）：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Collections.Generic;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Text;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Windows.Forms;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.ComponentModel;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.ComponentModel.Design;<br><br></span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;Osmanthus.WinForms<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;SdiToolStripMerger&nbsp;:&nbsp;Component,&nbsp;ISupportInitialize<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;Form&nbsp;hostingForm;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;ToolStrip&nbsp;mainToolStrip;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;IToolStripMergableForm&nbsp;currentMdiChild&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;List</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">ToolStripItem</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;toolStripItemList&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;List</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">ToolStripItem</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;ToolStrip&nbsp;MainToolStrip<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">get</span><span style="color: #000000;">&nbsp;{&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;mainToolStrip;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">set</span><span style="color: #000000;">&nbsp;{&nbsp;mainToolStrip&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;value;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[BrowsableAttribute(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">)]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;Form&nbsp;HostingForm<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">get</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;((hostingForm&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.DesignMode)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDesignerHost&nbsp;designer&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.GetService(</span><span style="color: #0000ff;">typeof</span><span style="color: #000000;">(IDesignerHost))&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;IDesignerHost;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(designer&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hostingForm&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;designer.RootComponent&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;Form;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;hostingForm;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">set</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hostingForm&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;value; //这里需要改进一下, 应该一旦设置了host form,就不能再修改.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">#region</span><span style="color: #000000;">&nbsp;ISupportInitialize&nbsp;Members</span><span style="color: #000000;"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;BeginInit()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;EndInit()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;((</span><span style="color: #000000;">!</span><span style="color: #000000;">DesignMode)&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;(hostingForm&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hostingForm.MdiChildActivate&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;EventHandler(UpdateToolStrip);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;UpdateToolStrip(</span><span style="color: #0000ff;">object</span><span style="color: #000000;">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;"> //清除从上个激活子窗体合并来的工具栏内容<br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(currentMdiChild&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">foreach</span><span style="color: #000000;">&nbsp;(ToolStripItem&nbsp;toolItem&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;toolStripItemList)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentMdiChild.MergedToolStrip.Items.Add(toolItem);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toolStripItemList.Clear();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IToolStripMergableForm&nbsp;form&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(IToolStripMergableForm)hostingForm.ActiveMdiChild;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;"> //如当前激活的子窗体实现了</span><span style="color: #000000;"> IToolStripMergableForm接口,则合并其工具栏内容<br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(form&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)</span><span style="color: #000000;"></span><br><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentMdiChild&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;form;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">foreach</span><span style="color: #000000;">&nbsp;(ToolStripItem&nbsp;toolItem&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;currentMdiChild.MergedToolStrip.Items)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toolStripItemList.Add(toolItem);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">foreach</span><span style="color: #000000;">&nbsp;(ToolStripItem&nbsp;toolItem&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;toolStripItemList)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainToolStrip.Items.Add(toolItem);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentMdiChild&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toolStripItemList.Clear();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp; }<br>}<br><br>2006/12/25 附记：今天早上发现了.net Framework 2.0新增加的</span><span style="color: #000000;">一个</span><span style="color: #000000;">类ToolStripManager，使用此类可以简化上述代码。<br></span></div>
<br>   <img src ="http://www.cnblogs.com/panjiwen/aggbug/601873.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42925/" target="_blank">[新闻]Wikipedia“变心”，力挺Ubuntu</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>MDI窗体的工具栏合并(ToolStrip Merging)</title><link>http://www.cnblogs.com/panjiwen/archive/2006/12/23/601421.html</link><dc:creator>沧海月明</dc:creator><author>沧海月明</author><pubDate>Sat, 23 Dec 2006 07:39:00 GMT</pubDate><guid>http://www.cnblogs.com/panjiwen/archive/2006/12/23/601421.html</guid><wfw:comment>http://www.cnblogs.com/panjiwen/comments/601421.html</wfw:comment><comments>http://www.cnblogs.com/panjiwen/archive/2006/12/23/601421.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/panjiwen/comments/commentRss/601421.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/panjiwen/services/trackbacks/601421.html</trackback:ping><description><![CDATA[MDI一个比较显著的特性是菜单合并。即子窗体的菜单能合并到主窗体的菜单上。假想一下如果没有这个功能，主窗体和子窗体各显示一个菜单栏，那人机交互该有多糟糕。工具栏是一个与菜单栏同等重要的窗体界面元素，如果也能实现合并功能，将为MDI界面的应用开发增色不少。我们可以象典型的MDI应用一样，只将工具栏放在主窗口上，在主窗体的工具栏中放上全局通用的工具项，而针对特定子窗体的工具项在子窗体中设计，显示的时候与主窗体的工具栏合并显示。这样一则可以在做到界面的一致性的同时也将MDI主窗体和子窗体之间的耦合降到很低，其次在支持插件开发时也很有意义。<br>示例如下, 主窗体<br><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/panjiwen/image001.jpg" height="300" width="378"><br>显示某子窗体时:<br><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/panjiwen/image002.jpg" height="300" width="378"><br>显示另外一个子窗体时：<br><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/panjiwen/image003.jpg" height="300" width="378"><br>其中变化的工具项是在子窗体中设计的。虽然显示在主窗体的工具栏中，但还是从属于子窗体，在事件处理等操作中与原来并无二致。<br><br>   <img src ="http://www.cnblogs.com/panjiwen/aggbug/601421.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42925/" target="_blank">[新闻]Wikipedia“变心”，力挺Ubuntu</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>新的TreeView控件</title><link>http://www.cnblogs.com/panjiwen/archive/2006/03/26/359496.html</link><dc:creator>沧海月明</dc:creator><author>沧海月明</author><pubDate>Sun, 26 Mar 2006 14:56:00 GMT</pubDate><guid>http://www.cnblogs.com/panjiwen/archive/2006/03/26/359496.html</guid><wfw:comment>http://www.cnblogs.com/panjiwen/comments/359496.html</wfw:comment><comments>http://www.cnblogs.com/panjiwen/archive/2006/03/26/359496.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/panjiwen/comments/commentRss/359496.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/panjiwen/services/trackbacks/359496.html</trackback:ping><description><![CDATA[<br>我自已写的扩展TreeView控件, 实现了三态CheckBox和RadioButton：<br><br><img height=314 alt="" src="http://www.cnblogs.com/images/cnblogs_com/panjiwen/ExTreeView.PNG" width=275 border=0> 
<img src ="http://www.cnblogs.com/panjiwen/aggbug/359496.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42924/" target="_blank">[新闻]“不可破解”的加密技术出</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>目前关于.net 2.0下设计器最为详细的资料</title><link>http://www.cnblogs.com/panjiwen/archive/2006/03/18/352593.html</link><dc:creator>沧海月明</dc:creator><author>沧海月明</author><pubDate>Sat, 18 Mar 2006 01:29:00 GMT</pubDate><guid>http://www.cnblogs.com/panjiwen/archive/2006/03/18/352593.html</guid><wfw:comment>http://www.cnblogs.com/panjiwen/comments/352593.html</wfw:comment><comments>http://www.cnblogs.com/panjiwen/archive/2006/03/18/352593.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/panjiwen/comments/commentRss/352593.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/panjiwen/services/trackbacks/352593.html</trackback:ping><description><![CDATA[<a href="http://msdn.microsoft.com/msdnmag/issues/06/03/DesignerHosting/default.aspx">http://msdn.microsoft.com/msdnmag/issues/06/03/DesignerHosting/default.aspx</a><br>作者: <a title="More articles by this author" href="http://msdn.microsoft.com/msdnmag/find/?type=Au&amp;phrase=Dinesh%20Chandnani&amp;words=exact">Dinesh Chandnani</a><br><br>
<img src ="http://www.cnblogs.com/panjiwen/aggbug/352593.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42923/" target="_blank">[新闻]13款Firefox Gmail扩展</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>.NET framework2.0中的农历类(三)写自已的日期格式化器</title><link>http://www.cnblogs.com/panjiwen/archive/2006/02/06/326159.html</link><dc:creator>沧海月明</dc:creator><author>沧海月明</author><pubDate>Mon, 06 Feb 2006 09:23:00 GMT</pubDate><guid>http://www.cnblogs.com/panjiwen/archive/2006/02/06/326159.html</guid><wfw:comment>http://www.cnblogs.com/panjiwen/comments/326159.html</wfw:comment><comments>http://www.cnblogs.com/panjiwen/archive/2006/02/06/326159.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/panjiwen/comments/commentRss/326159.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/panjiwen/services/trackbacks/326159.html</trackback:ping><description><![CDATA[&nbsp;<span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">五、写自已的日期格式化器</span><span style="font-size: 9pt;"><o:p></o:p></span>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">昨天看了一篇文章，说目前大家用的&#8220;农历&#8221;这个术语是文革时期才有的，目的是反封建。这里为了省事，还是继续使用这个术语。而英文名称</span><span style="font-size: 9pt;">ChineseLunisolarCalendar</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">太长，我自己的代码中就用</span><span style="font-size: 9pt;">ChineseCalendar</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">为相关功能命名，这个名字也还过得去吧。</span><span style="font-size: 9pt;"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">我原先设想自定义一个类，使得能写出这样的代码：</span></p>
<span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN"><span style="font-size: 9pt;">
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;s</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;DateTime.Now.ToString(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;MyFormatProvider());</span></div>
<p class="MsoNormal"></p>
</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">就能得出我想要的农历日期字符串，经过测试却失败了，依据我的分析，微软公司在</span><span style="font-size: 9pt;">.net</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">框架中把日期时间型的格式写死了，只能依据相关的地区采用固定的几种显示格式，没法再自行定义。而前文已经说过，而所有的相关格式微软公司都放到一个名为</span><span style="font-size: 9pt;">culture.nlp</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">的文件中</span><span style="font-size: 9pt;">(</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">这个文件在以前的</span><span style="font-size: 9pt;">.net</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">框架是一个独立的文件，在</span><span style="font-size: 9pt;">.net 2.0</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">被作为一个资源编译到</span><span style="font-size: 9pt;">mscorlib.dll</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">中。</span><span style="font-size: 9pt;">) (</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">我的这个不能为</span><span style="font-size: 9pt;">DateTime</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">写自已的格式化器的观点没有资料佐证，如有不当之处，请大家指正</span><span style="font-size: 9pt;">) <o:p></o:p></span>
<p>&#160;</p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">虽然不能为</span><span style="font-size: 9pt;">DataTime</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">写自定义的格式器，但还有另外一个途径，就是为</span><span style="font-size: 9pt;">String</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">类的</span><span style="font-size: 9pt;">Format</span><span style="font-size: 9pt; font-family: 宋体;" lang="ZH-CN">方法写自定义格式化器，我测试了一下，效果还不错，调用方式如下：</span><span style="font-size: 9pt; font-family: 新宋体;" lang="ZH-CN"></span></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;s</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;String.Format(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ChineseCalendarFormatter(),&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">{0:D}</span><span style="color: #000000;">"</span><span style="color: #000000;">,DateTime.Now);</span></div>
<p class="MsoNormal">可以得到&#8220;二〇〇六年正月初九&#8221;</p>
</span><span style="font-size: 9pt; font-family: 新宋体;" lang="ZH-CN">
<p>&#160;</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;s</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;String.Format(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ChineseCalendarFormatter(),&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">{0:d}</span><span style="color: #000000;">"</span><span style="color: #000000;">,DateTime.Now);</span></div>
<p class="MsoNormal">可以得到&#8220;丙戌年正月初九&#8221;</p>
</span><span style="font-size: 9pt; font-family: 新宋体;"><o:p></o:p></span>
<p>&#160;</p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 新宋体;" lang="ZH-CN">虽然没有前面所设想的方便，但也还能接受，全部代码帖出如下：<br></span><span style="font-size: 9pt; font-family: 新宋体;"><o:p><br>第一个类，主要是封装了农历的一些常用字符和对日历处理的最基本功能<br></o:p></span></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Collections.Generic;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Text;<br><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Globalization;<br><br></span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;ChineseCalendarHelper<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;GetYear(DateTime&nbsp;time)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;sb&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringBuilder();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;year&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;calendar.GetYear(time);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;d;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">do</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;year&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.Insert(</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;ChineseNumber[d]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;year&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;year&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(year&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;sb.ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;GetMonth(DateTime&nbsp;time)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;month&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;calendar.GetMonth(time);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;year&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;calendar.GetYear(time);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;leap&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">正月不可能闰月</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;month;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(calendar.IsLeapMonth(year,&nbsp;i))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;leap&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">一年中最多有一个闰月</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(leap&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;month</span><span style="color: #000000;">--</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;(leap&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;month&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">闰</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;ChineseMonthName[month&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;GetDay(DateTime&nbsp;time)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;ChineseDayName[calendar.GetDayOfMonth(time)&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;GetStemBranch(DateTime&nbsp;time)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;sexagenaryYear&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;calendar.GetSexagenaryYear(time);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;stemBranch&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;CelestialStem.Substring(sexagenaryYear&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;"> <br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">TerrestrialBranch.Substring(sexagenaryYear&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">12</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;stemBranch;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;ChineseLunisolarCalendar&nbsp;calendar&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ChineseLunisolarCalendar();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;ChineseNumber&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">〇一二三四五六七八九</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;CelestialStem&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">甲乙丙丁戊己庚辛壬癸</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;TerrestrialBranch&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">子丑寅卯辰巳午未申酉戌亥</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">readonly</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">[]&nbsp;ChineseDayName&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">[]&nbsp;{<br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"</span><span style="color: #000000;">初一</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">初二</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">初三</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">初四</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">初五</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">初六</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">初七</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">初八</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">初九</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">初十</span><span style="color: #000000;">"</span><span style="color: #000000;">,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">十一</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">十二</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">十三</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">十四</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">十五</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">十六</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">十七</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">十八</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">十九</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">二十</span><span style="color: #000000;">"</span><span style="color: #000000;">,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">廿一</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">廿二</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">廿三</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">廿四</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">廿五</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">廿六</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">廿七</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">廿八</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">廿九</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">三十</span><span style="color: #000000;">"</span><span style="color: #000000;">};<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">readonly</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">[]&nbsp;ChineseMonthName&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">[] <br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">{&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">正</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">二</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">三</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">四</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">五</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">六</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">七</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">八</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">九</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">十</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">十一</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">十二</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;};<br>}<br></span></div>
<br><font face="新宋体" size="2">第二个类为自定义格式化器：<br></font><font face="新宋体" size="2">
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Collections.Generic;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Text;<br><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Globalization;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Threading;<br><br></span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;ChineseCalendarFormatter&nbsp;:&nbsp;IFormatProvider,&nbsp;ICustomFormatter<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">实现IFormatProvider</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">object</span><span style="color: #000000;">&nbsp;GetFormat(Type&nbsp;formatType)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(formatType&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">typeof</span><span style="color: #000000;">(ICustomFormatter))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;Thread.CurrentThread.CurrentCulture.GetFormat(formatType);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">实现ICustomFormatter</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;Format(</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;format,&nbsp;</span><span style="color: #0000ff;">object</span><span style="color: #000000;">&nbsp;arg,&nbsp;IFormatProvider&nbsp;formatProvider)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;s;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFormattable&nbsp;formattable&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;arg&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;IFormattable;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(formattable&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;arg.ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;formattable.ToString(format,&nbsp;formatProvider);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(arg.GetType()&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">typeof</span><span style="color: #000000;">(DateTime))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateTime&nbsp;time&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(DateTime)arg;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">switch</span><span style="color: #000000;">&nbsp;(format)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">D</span><span style="color: #000000;">"</span><span style="color: #000000;">:&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">长日期格式</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;String.Format(</span><span style="color: #000000;">"</span><span style="color: #000000;">{0}年{1}月{2}</span><span style="color: #000000;">"</span><span style="color: #000000;">,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChineseCalendarHelper.GetYear(time),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChineseCalendarHelper.GetMonth(time),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChineseCalendarHelper.GetDay(time));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">d</span><span style="color: #000000;">"</span><span style="color: #000000;">:&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">短日期格式</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;String.Format(</span><span style="color: #000000;">"</span><span style="color: #000000;">{0}年{1}月{2}</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;ChineseCalendarHelper.GetStemBranch(time),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChineseCalendarHelper.GetMonth(time),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChineseCalendarHelper.GetDay(time));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">M</span><span style="color: #000000;">"</span><span style="color: #000000;">:&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">月日格式</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;String.Format(</span><span style="color: #000000;">"</span><span style="color: #000000;">{0}月{1}</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;ChineseCalendarHelper.GetMonth(time),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChineseCalendarHelper.GetDay(time));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Y</span><span style="color: #000000;">"</span><span style="color: #000000;">:&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">年月格式</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;String.Format(</span><span style="color: #000000;">"</span><span style="color: #000000;">{0}年{1}月</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;ChineseCalendarHelper.GetYear(time),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChineseCalendarHelper.GetMonth(time));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">default</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;String.Format(</span><span style="color: #000000;">"</span><span style="color: #000000;">{0}年{1}月{2}</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;ChineseCalendarHelper.GetYear(time),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChineseCalendarHelper.GetMonth(time),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChineseCalendarHelper.GetDay(time));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;s;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</span></div>
这段代码中间处理格式那部份稍做改进，就可以支持更多的日期格式。<br><br>有了这两段代码为原型，要实现计算和显示一个日期的农历日期及其它功能，基本上就很容易了。</font>  <img src ="http://www.cnblogs.com/panjiwen/aggbug/326159.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42922/" target="_blank">[新闻]支持鼠标手势的Chrome中文修改版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>.NET framework2.0中的农历类(二)</title><link>http://www.cnblogs.com/panjiwen/archive/2006/02/04/325382.html</link><dc:creator>沧海月明</dc:creator><author>沧海月明</author><pubDate>Sat, 04 Feb 2006 12:30:00 GMT</pubDate><guid>http://www.cnblogs.com/panjiwen/archive/2006/02/04/325382.html</guid><wfw:comment>http://www.cnblogs.com/panjiwen/comments/325382.html</wfw:comment><comments>http://www.cnblogs.com/panjiwen/archive/2006/02/04/325382.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/panjiwen/comments/commentRss/325382.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/panjiwen/services/trackbacks/325382.html</trackback:ping><description><![CDATA[&nbsp;<SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">三、农历类的使用</SPAN><SPAN style="FONT-SIZE: 9pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN> 
<P class=MsoNormal><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">既然</SPAN><SPAN style="FONT-SIZE: 9pt">.net</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">框架不支持直接将日期转换成农历格式的字符串，那么要将显示农历格式的日期，就只要自已写代码了。不过由于已经有了</SPAN><SPAN style="FONT-SIZE: 9pt">ChineseLunisolarCalendar</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">类实现了公历转换为农历日期的功能，所以要写这样的代码也比较简单。需要用到</SPAN><SPAN style="FONT-SIZE: 9pt">ChineseLunisolarCalendar</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">以下几个主要方法：</SPAN><SPAN style="FONT-SIZE: 9pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 9pt">int GetYear (DateTime time) </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">获取指定公历日期的农历年份，使用的还是公历纪元。在每年的元旦之后春节之前农历的纪年会比公历小</SPAN><SPAN style="FONT-SIZE: 9pt">1,</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">其它时候等于公历纪年。虽然农历使用传说中的耶稣生日纪元似乎不太妥当，不过我们确实已经几十年没有实行一个更好的纪年办法，也只有将就了。</SPAN><SPAN style="FONT-SIZE: 9pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 9pt">int GetMonth (DateTime time) </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">获取指定公历日期的农历月份。这里要注意了，由于农历有接近三分之一的年份存在闰月，则在这些年份里会有十三个，而具体哪一个月是闰月也说不准，这里不同于希伯来历。以今年为例，今年闰七月，则此方法在参数为闰七月的日期是返回值为</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt"> </SPAN><SPAN style="FONT-SIZE: 9pt">8</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">，参数为农历十二月的日期时返回值为</SPAN><SPAN style="FONT-SIZE: 9pt">13<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 9pt">bool IsLeapMonth (<SPAN style="mso-tab-count: 1"> </SPAN>int year,<SPAN style="mso-tab-count: 1">&nbsp;&nbsp; </SPAN>int month) </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">获取指定农历年份和月份是否为闰月，这个函数和上个函数配合使用就可以算出农历的月份了。</SPAN><SPAN style="FONT-SIZE: 9pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 9pt">int GetDayOfMonth (DateTime time) </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">获取指定公历日期的农历天数，这个值根据大月或者小月取值是</SPAN><SPAN style="FONT-SIZE: 9pt">1</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">到</SPAN><SPAN style="FONT-SIZE: 9pt">30</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">或者</SPAN><SPAN style="FONT-SIZE: 9pt">1</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">到</SPAN><SPAN style="FONT-SIZE: 9pt">29, MSDN</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">上说的</SPAN><SPAN style="FONT-SIZE: 9pt">1</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">到</SPAN><SPAN style="FONT-SIZE: 9pt">31</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">显然是错的</SPAN><SPAN style="FONT-SIZE: 9pt">, </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">没有哪个农历月份会有</SPAN><SPAN style="FONT-SIZE: 9pt">31</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">天。</SPAN><SPAN style="FONT-SIZE: 9pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 9pt">int GetSexagenaryYear (DateTime time) </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">获取指定公历日期的农历年份的干支纪年，从</SPAN><SPAN style="FONT-SIZE: 9pt">1</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">到</SPAN><SPAN style="FONT-SIZE: 9pt">60</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">，分别是甲子、乙丑、丙寅、</SPAN><SPAN style="FONT-SIZE: 9pt">&#8230;.</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">癸亥</SPAN><SPAN style="FONT-SIZE: 9pt">, </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">比如戊戌变法、辛亥革命就是按这个来命名的。当然算八字也少不了这个。</SPAN><SPAN style="FONT-SIZE: 9pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 9pt">int GetCelestialStem (int sexagenaryYear) </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">获取一个天支的天干</SPAN><SPAN style="FONT-SIZE: 9pt">, </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">从</SPAN><SPAN style="FONT-SIZE: 9pt">1</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">到</SPAN><SPAN style="FONT-SIZE: 9pt">10, </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">表示甲、乙、丙</SPAN><SPAN style="FONT-SIZE: 9pt">&#8230;.</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">，说白了就是对</SPAN><SPAN style="FONT-SIZE: 9pt">10</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">取模。</SPAN><SPAN style="FONT-SIZE: 9pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 9pt">int GetTerrestrialBranch (int sexagenaryYear) ) </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">获取一个干支的地支，</SPAN><SPAN style="FONT-SIZE: 9pt">, </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">从</SPAN><SPAN style="FONT-SIZE: 9pt">1</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">到</SPAN><SPAN style="FONT-SIZE: 9pt">12, </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">表示子、丑、寅、</SPAN><SPAN style="FONT-SIZE: 9pt">&#8230;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">今年是狗年，那么今年年份的地支就是&#8220;戌&#8221;。</SPAN><SPAN style="FONT-SIZE: 9pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">有了这几个方法，显示某天的农历月份日期、农历节日等都是小菜一碟，算命先生排八字用这几个方法，又快又准确，写出的代码也很短。<BR>&nbsp; </P>
<P><SPAN lang=ZH-CN>四、几种东亚农历类的区别</SPAN></P>
<P><SPAN lang=ZH-CN>经过我的测试，</SPAN><SPAN>ChineseLunisolarCalendar, JapaneseLunisolarCalendar, KoreanLunisolaCalendarr, TaiwanLunisolarCalendar</SPAN><SPAN lang=ZH-CN>这四种日历，无论哪一种，以</SPAN><SPAN>2006</SPAN><SPAN lang=ZH-CN>年</SPAN><SPAN>2</SPAN><SPAN lang=ZH-CN>月</SPAN><SPAN>6</SPAN><SPAN lang=ZH-CN>日为参数，调用它们的</SPAN><SPAN>GetMonth</SPAN><SPAN lang=ZH-CN>方法得到的结果都是</SPAN><SPAN>1</SPAN><SPAN lang=ZH-CN>，</SPAN><SPAN>GetDayOfMonth</SPAN><SPAN lang=ZH-CN>得到的结果都是</SPAN><SPAN>8</SPAN><SPAN lang=ZH-CN>。想想也是，我们过的端午节和韩国的不太可能不是一天。</SPAN></P>
<P><SPAN lang=ZH-CN>但是调用</SPAN><SPAN>GetYear</SPAN><SPAN lang=ZH-CN>方法得到结果就有区别了</SPAN><SPAN>ChineseLunisolarCalendar</SPAN><SPAN lang=ZH-CN>和</SPAN><SPAN>KoreanLunisolarCalendar</SPAN><SPAN lang=ZH-CN>都返回</SPAN><SPAN>2006</SPAN><SPAN lang=ZH-CN>，也就是公历纪年，</SPAN><SPAN>TaiwanLunisolarCalendar</SPAN><SPAN lang=ZH-CN>的返回值是</SPAN><SPAN>95</SPAN><SPAN lang=ZH-CN>，依然是民国纪年，</SPAN><SPAN>JapaneseLunisolarCalendar</SPAN><SPAN lang=ZH-CN>的返回值是</SPAN><SPAN>18, </SPAN><SPAN lang=ZH-CN>平成纪年。</SPAN></P>
<P><SPAN lang=ZH-CN>另外的一个区别是这四种日历的</SPAN><SPAN>MinSupportedDateTime<SPAN lang=ZH-CN>和</SPAN>MaxSupportedDateTime<SPAN lang=ZH-CN>各不一样，以下是对照表：</SPAN></P>
<P class=MsoNormal>
<TABLE style="WIDTH: 522px; BORDER-COLLAPSE: collapse; HEIGHT: 131px" cellSpacing=0 cellPadding=3 border=1>
<TBODY>
<TR>
<TD style="FONT-SIZE: 10pt; WIDTH: 172px; HEIGHT: 25px"><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">日历类</SPAN></TD>
<TD style="FONT-SIZE: 10pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">MinSupportedDateTime</SPAN></TD>
<TD style="FONT-SIZE: 10pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">MaxSupportedDateTime</SPAN></TD></TR>
<TR>
<TD style="FONT-SIZE: 10pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">ChineseLunisolarCalendar</SPAN></TD>
<TD style="FONT-SIZE: 10pt"><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">公元</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">1901</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">年</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">1</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">月初</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">1</SPAN></TD>
<TD style="FONT-SIZE: 10pt"><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">公元</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">2100</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">年</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">12</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">月</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">29</SPAN></TD></TR>
<TR>
<TD style="FONT-SIZE: 10pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">TaiwanLunisolarCalendar</SPAN></TD>
<TD style="FONT-SIZE: 10pt"><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">民国</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">1</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">年</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">1</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">月初</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">1</SPAN></TD>
<TD style="FONT-SIZE: 10pt"><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">民国</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">139</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">年</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">12</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">月</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">29</SPAN></TD></TR>
<TR>
<TD style="FONT-SIZE: 10pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">JapaneseLunisolarCalendar</SPAN></TD>
<TD style="FONT-SIZE: 10pt"><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">昭和</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">35</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">年</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">1</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">月初</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">1</SPAN></TD>
<TD style="FONT-SIZE: 10pt"><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">平成</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">61</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">年</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">12</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">月</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">29</SPAN></TD></TR>
<TR>
<TD style="FONT-SIZE: 10pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">KoreanLunisolarCalendar</SPAN></TD>
<TD style="FONT-SIZE: 10pt"><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">公元</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">918</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">年</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">1</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">月初</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">1</SPAN></TD>
<TD style="FONT-SIZE: 10pt; WIDTH: 159px; HEIGHT: 26px"><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">公元</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">2050</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">年</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">12</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">月</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">29</SPAN></TD></TR></TBODY></TABLE></P>
<P><SPAN lang=ZH-CN>韩国农历类支持的最小日期为</SPAN><SPAN>918<SPAN lang=ZH-CN>年</SPAN>(<SPAN lang=ZH-CN>也即高丽王朝建立的年份</SPAN>)<SPAN lang=ZH-CN>，以此而论，中国农历类支持的最小日期不说从商周算起，从汉唐算总该没问题吧？微软公司啊，又在&#8220;厚彼薄此&#8221;，唉。</SPAN></P>
<P><SPAN lang=ZH-CN>其次，日本还以天皇纪年，如果哪天</SPAN><SPAN>xxxx, <SPAN lang=ZH-CN>岂不是使用</SPAN><SPAN>JapaneseLunisolarCalendar</SPAN><SPAN lang=ZH-CN>写出的程序都有问题啦？</SPAN></P></SPAN></SPAN></SPAN></SPAN><img src ="http://www.cnblogs.com/panjiwen/aggbug/325382.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42921/" target="_blank">[新闻]调查显示：开源技术已进入企业主流</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>.NET framework2.0中的农历类(一)</title><link>http://www.cnblogs.com/panjiwen/archive/2006/02/04/325203.html</link><dc:creator>沧海月明</dc:creator><author>沧海月明</author><pubDate>Sat, 04 Feb 2006 03:42:00 GMT</pubDate><guid>http://www.cnblogs.com/panjiwen/archive/2006/02/04/325203.html</guid><wfw:comment>http://www.cnblogs.com/panjiwen/comments/325203.html</wfw:comment><comments>http://www.cnblogs.com/panjiwen/archive/2006/02/04/325203.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/panjiwen/comments/commentRss/325203.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/panjiwen/services/trackbacks/325203.html</trackback:ping><description><![CDATA[&nbsp;<SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">一、简介<BR></SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">过年是中国</SPAN><SPAN style="FONT-SIZE: 9pt">(</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">以及日本、韩国等国</SPAN><SPAN style="FONT-SIZE: 9pt">)</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">人民的第一大节日。你怎么知道哪天过年？查日历或者听别人说？程序员当然有程序员的办法，就是写程序啦。<BR></SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">虽然公历</SPAN><SPAN style="FONT-SIZE: 9pt">(</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">俗称的</SPAN><SPAN style="FONT-SIZE: 9pt">&#8220;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">阳历</SPAN><SPAN style="FONT-SIZE: 9pt">&#8221;)</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">已经成了全世界的通用标准，而且也具有多方面的优越性。但在东亚地区，还是离不开</SPAN><SPAN style="FONT-SIZE: 9pt">&#8220;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">农历&#8221;，春节、元宵、端午、中秋、重阳这些节日是农历的，大部份人的老爸老妈的生日也是农历的。<BR></SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">早在</SPAN><SPAN style="FONT-SIZE: 9pt">1.0</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">框架出来的时候，我就认为微软公司不应该</SPAN><SPAN style="FONT-SIZE: 9pt">&#8220;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">厚彼薄此</SPAN><SPAN style="FONT-SIZE: 9pt">&#8221;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">，在</SPAN><SPAN style="FONT-SIZE: 9pt">.net</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">框架中提供了希伯来历等，却没有提供更广泛使用的</SPAN><SPAN style="FONT-SIZE: 9pt">&#8220;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">农历</SPAN><SPAN style="FONT-SIZE: 9pt">&#8221;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">。<BR></SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">而在</SPAN><SPAN style="FONT-SIZE: 9pt">.net 2.0</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">中，微软公司终于做出了这个小小的改进。<BR></SPAN><SPAN style="FONT-SIZE: 9pt">.net 2.0</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">在</SPAN><SPAN style="FONT-SIZE: 9pt">System.Globalization</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">命名空间中新增加了</SPAN><SPAN style="FONT-SIZE: 9pt">EastAsianLunisolarCalendar </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">类及以继承它的</SPAN><SPAN style="FONT-SIZE: 9pt">ChineseLunisolarCalendar, JapaneseLunisolarCalendar, KoreanLunisolarCalendar, TaiwanLunisolarCalendar</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">等几个类。</SPAN><SPAN style="FONT-SIZE: 9pt">LunisolarCalendar</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">顾名思义应为</SPAN><SPAN style="FONT-SIZE: 9pt">&#8220;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">阴阳历</SPAN><SPAN style="FONT-SIZE: 9pt">&#8221;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">，我的理解是因为我们所用的农历虽然按照月亮公转来编月份，但用</SPAN><SPAN style="FONT-SIZE: 9pt">&#8220;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">闰月</SPAN><SPAN style="FONT-SIZE: 9pt">&#8221;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的方式来调整年份与地球公转的误差，严格意义上来说是结合了月亮公转和地球公转的成份，因此属于</SPAN><SPAN style="FONT-SIZE: 9pt">&#8220;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">阴阳历</SPAN><SPAN style="FONT-SIZE: 9pt">&#8221;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">。但我这里还是按照习惯称之为</SPAN><SPAN style="FONT-SIZE: 9pt">&#8220;</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">农历</SPAN><SPAN style="FONT-SIZE: 9pt">&#8221; </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">。</SPAN><SPAN style="FONT-SIZE: 9pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN> 
<P class=MsoNormal><SPAN style="FONT-SIZE: 9pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">二、新的农历类还是没有公民待遇<BR></SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">为了测试新的日历类，我兴冲冲地写了几句代码：</SPAN><SPAN style="FONT-SIZE: 9pt">(</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">省略了调用这个方法的其它代码</SPAN><SPAN style="FONT-SIZE: 9pt">)<BR><o:p></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;getDateString(DateTime&nbsp;dt)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CultureInfo&nbsp;ci&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;CultureInfo(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">zh-CN</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;ci.DateTimeFormat.Calendar&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ChineseLunisolarCalendar();<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;dt.ToString(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">D</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,ci);<BR>}</SPAN></DIV></o:p></SPAN>
<P class=MsoNormal><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-no-proof: yes">运行报错，错误信息是：</SPAN><SPAN style="FONT-SIZE: 9pt">"Not a valid calendar for the given culture "<BR><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 9pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">为了说明问题，继续测试<BR></SPAN><SPAN style="FONT-SIZE: 9pt"><o:p></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;getDateString(DateTime&nbsp;dt)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CultureInfo&nbsp;ci&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;CultureInfo(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">zh-TW</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;ci.DateTimeFormat.Calendar&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;TaiwanCalendar();<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;dt.ToString(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">D</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,ci);<BR>}<BR></SPAN></DIV></o:p></SPAN>
<P class=MsoNormal><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-no-proof: yes">可以正常运行，结果是</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-no-proof: yes">95<SPAN lang=ZH-CN>年</SPAN>x<SPAN lang=ZH-CN>月</SPAN>x<SPAN lang=ZH-CN>日</SPAN>(<SPAN lang=ZH-CN>民国纪年</SPAN>)<SPAN lang=ZH-CN>，注释掉中间那条语句，结果是</SPAN>2006<SPAN lang=ZH-CN>年</SPAN>x<SPAN lang=ZH-CN>月</SPAN>x<SPAN lang=ZH-CN>日</SPAN>(<SPAN lang=ZH-CN>也就是使用公历</SPAN>)<SPAN lang=ZH-CN>，将中间那条语句修改成：</SPAN>ci.DateTimeFormat.Calendar = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: teal">TaiwanLunisolarCalendar</SPAN>()<SPAN lang=ZH-CN>，照样出错。查相关资料，原来</SPAN>DateTimeFormat<SPAN lang=ZH-CN>的</SPAN>Calendar<SPAN lang=ZH-CN>属性只能为</SPAN>CultureInfo<SPAN lang=ZH-CN>的</SPAN>OptionalCalendars<SPAN lang=ZH-CN>属性所指定范围。</SPAN><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-no-proof: yes">于是再写一段代码测试</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-no-proof: yes">OptionalCalendars的内容,</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-no-proof: yes">对于</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-no-proof: yes">zh-CN<SPAN lang=ZH-CN>语言，惟一可用于日期格式的</SPAN>calendar<SPAN lang=ZH-CN>是</SPAN></SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">本地化的</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-no-proof: yes">GregorianCalendar(<SPAN lang=ZH-CN>也就是公历)。对于</SPAN>zh-TW<SPAN lang=ZH-CN>，可用于日期格式的</SPAN>calendar<SPAN lang=ZH-CN>是美国英语和本地化的</SPAN>GregorianCalendar<SPAN lang=ZH-CN>以及</SPAN>TaiwanCalendar(<SPAN lang=ZH-CN>即公历的年份减</SPAN>1911)<SPAN lang=ZH-CN>，都没有包括农历。</SPAN><o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-no-proof: yes">也就是说</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-no-proof: yes">.net2.0<SPAN lang=ZH-CN>虽然提供了农<A>历类，但对它的支持并不及同样有闰月的希伯来历。我查资料的时候找到了博客堂的一篇文章</SPAN></A>http://blog.joycode.com/percyboy/archive/2004/09/17.aspx <SPAN lang=ZH-CN>，作者在一年半以前发现了农历类不支持日期格式化的问题，并认为这是一个</SPAN>bug<SPAN lang=ZH-CN>。当然还算不上</SPAN>bug<SPAN lang=ZH-CN>，只不过微软没有重视而已</SPAN>(<SPAN lang=ZH-CN>责任在微软吗？我想应该不是，在商业社会我们有多重视微软就会有多重视。和以色列比起来，我们对传统文化的重视程度差得太远</SPAN>)。<BR><o:p></o:p></SPAN></P><img src ="http://www.cnblogs.com/panjiwen/aggbug/325203.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42921/" target="_blank">[新闻]调查显示：开源技术已进入企业主流</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>窗体设计器试验程序下载地址</title><link>http://www.cnblogs.com/panjiwen/archive/2005/11/10/272980.html</link><dc:creator>沧海月明</dc:creator><author>沧海月明</author><pubDate>Thu, 10 Nov 2005 03:30:00 GMT</pubDate><guid>http://www.cnblogs.com/panjiwen/archive/2005/11/10/272980.html</guid><wfw:comment>http://www.cnblogs.com/panjiwen/comments/272980.html</wfw:comment><comments>http://www.cnblogs.com/panjiwen/archive/2005/11/10/272980.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/panjiwen/comments/commentRss/272980.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/panjiwen/services/trackbacks/272980.html</trackback:ping><description><![CDATA[目前的代码比较粗糙，仅包含了系列随笔1-6的内容。<BR>我计划在未来的时间里将之设计成一个基本可用的提供代码生成、事件支持的设计器, 以此做为.net 2.0下Form Designer的一个参考例子。<BR><A href="http://www.cnblogs.com/Files/panjiwen/FormDesigner.zip"><BR>http://www.cnblogs.com/Files/panjiwen/FormDesigner.zip</A> <img src ="http://www.cnblogs.com/panjiwen/aggbug/272980.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42911/" target="_blank">[新闻]《第一财经周刊》:捅破下载软件公司的盈利窗户纸</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>写Form设计器尝试(六) 实现菜单命令</title><link>http://www.cnblogs.com/panjiwen/archive/2005/11/09/272058.html</link><dc:creator>沧海月明</dc:creator><author>沧海月明</author><pubDate>Wed, 09 Nov 2005 01:49:00 GMT</pubDate><guid>http://www.cnblogs.com/panjiwen/archive/2005/11/09/272058.html</guid><wfw:comment>http://www.cnblogs.com/panjiwen/comments/272058.html</wfw:comment><comments>http://www.cnblogs.com/panjiwen/archive/2005/11/09/272058.html#Feedback</comments><slash:comments>38</slash:comments><wfw:commentRss>http://www.cnblogs.com/panjiwen/comments/commentRss/272058.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/panjiwen/services/trackbacks/272058.html</trackback:ping><description><![CDATA[<SPAN style="FONT-SIZE: 10pt">&nbsp;<SPAN lang=ZH-CN>在写这篇的正文之前，我要衷心感谢微软公司的</SPAN><SPAN>Jeffrey Tan</SPAN><SPAN lang=ZH-CN>先生，他居然看懂了我的文理不通的英文提问，并且花费宝贵时间来钻研，帮我解决了一个星期来我百思不得其解的问题。我当时的问题是我写了一些语句来实现标准菜单命令，但是调试的时候怎么也得不到正确的结果，事实上我研究的两个例子用的方法和我的类似，它们却都可以正常执行。我一直没有找到原因，不得不求助支持。</SPAN> 
<P><SPAN>&nbsp;</SPAN><SPAN lang=ZH-CN>在&#8220;</SPAN><SPAN><A href="/archive/2005/11/01/266146.html"><SPAN lang=ZH-CN>写</SPAN>Form<SPAN lang=ZH-CN>设计器尝试</SPAN>(<SPAN lang=ZH-CN>四</SPAN>) <SPAN lang=ZH-CN>修改窗体上的控件属性</SPAN></A></SPAN><SPAN lang=ZH-CN>&#8221;我提出了怎么删除控件的问题，我拙作的关注者山伟也提出过用什么方法实现控件对齐更简便。所有这些问题的答案是使用</SPAN><SPAN>MenuCommandService, </SPAN><SPAN lang=ZH-CN>在</SPAN><SPAN>.net 1.0/1.1</SPAN><SPAN lang=ZH-CN>的办法是手工写一个实现</SPAN><SPAN>IMenuCommandService</SPAN><SPAN lang=ZH-CN>接口的类，将其实例添加到服务容器中，而</SPAN><SPAN>.net 2.0</SPAN><SPAN lang=ZH-CN>已经为我们提供了</SPAN><SPAN>MenuCommandService</SPAN><SPAN lang=ZH-CN>。</SPAN></P>
<P><SPAN>&nbsp;</SPAN><SPAN lang=ZH-CN>打开主窗体代码界面，为</SPAN><SPAN>Form1</SPAN><SPAN lang=ZH-CN>添加一个私有变量：</P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;MenuCommandService&nbsp;menuCommandService;</SPAN></DIV></SPAN></SPAN><SPAN style="FONT-SIZE: 10pt">&nbsp;<SPAN lang=ZH-CN>修改</SPAN><SPAN>Load</SPAN><SPAN lang=ZH-CN>事件代码，由于我们已经改了几次了，所以我这里全部帖出:<BR>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Form1_Load(</SPAN><SPAN style="COLOR: #0000ff">object</SPAN><SPAN style="COLOR: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<BR><IMG id=Codehighlighter1_52_1661_Open_Image onclick="this.style.display='none'; Codehighlighter1_52_1661_Open_Text.style.display='none'; Codehighlighter1_52_1661_Closed_Image.style.display='inline'; Codehighlighter1_52_1661_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_52_1661_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_52_1661_Closed_Text.style.display='none'; Codehighlighter1_52_1661_Open_Image.style.display='inline'; Codehighlighter1_52_1661_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_52_1661_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/Images/dot.gif"></SPAN><SPAN id=Codehighlighter1_52_1661_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;DesignSurface&nbsp;surface&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DesignSurface();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;toolBoxService&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DemoToolboxService();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;toolBoxService.ToolBox&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ListBox();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;toolBoxService.ToolBox.Items.Add(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Point</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;toolBoxService.ToolBox.Items.Add(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ToolboxItem(</SPAN><SPAN style="COLOR: #0000ff">typeof</SPAN><SPAN style="COLOR: #000000">(Button)));<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;toolBoxService.ToolBox.Items.Add(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ToolboxItem(</SPAN><SPAN style="COLOR: #0000ff">typeof</SPAN><SPAN style="COLOR: #000000">(TextBox)));<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;toolBoxService.ToolBox.Items.Add(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ToolboxItem(</SPAN><SPAN style="COLOR: #0000ff">typeof</SPAN><SPAN style="COLOR: #000000">(Label)));<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;toolBoxService.ToolBox.Items.Add(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ToolboxItem(</SPAN><SPAN style="COLOR: #0000ff">typeof</SPAN><SPAN style="COLOR: #000000">(TabControl)));<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;toolBoxService.ToolBox.Items.Add(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ToolboxItem(</SPAN><SPAN style="COLOR: #0000ff">typeof</SPAN><SPAN style="COLOR: #000000">(StatusBar)));<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Assembly&nbsp;a1=Assembly.LoadFrom(@"D:\Dotnet\MyControl.dll");<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;toolBoxService.ToolBox.Items.Add(new&nbsp;ToolboxItem(a1.GetType("MyControl.ComboBoxField")));</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;toolBoxService.ToolBox.Dock&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;DockStyle.Fill;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.panel1.Controls.Add(toolBoxService.ToolBox);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;IServiceContainer&nbsp;container&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;surface.GetService(</SPAN><SPAN style="COLOR: #0000ff">typeof</SPAN><SPAN style="COLOR: #000000">(IServiceContainer))&nbsp;</SPAN><SPAN style="COLOR: #0000ff">as</SPAN><SPAN style="COLOR: #000000">&nbsp;IServiceContainer;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;menuCommandService&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;MenuCommandService(surface);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(container&nbsp;</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)<BR><IMG id=Codehighlighter1_1070_1226_Open_Image onclick="this.style.display='none'; Codehighlighter1_1070_1226_Open_Text.style.display='none'; Codehighlighter1_1070_1226_Closed_Image.style.display='inline'; Codehighlighter1_1070_1226_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1070_1226_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1070_1226_Closed_Text.style.display='none'; Codehighlighter1_1070_1226_Open_Image.style.display='inline'; Codehighlighter1_1070_1226_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1070_1226_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/Images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1070_1226_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;container.AddService(</SPAN><SPAN style="COLOR: #0000ff">typeof</SPAN><SPAN style="COLOR: #000000">(IToolboxService),&nbsp;toolBoxService);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;container.AddService(</SPAN><SPAN style="COLOR: #0000ff">typeof</SPAN><SPAN style="COLOR: #000000">(IMenuCommandService),&nbsp;menuCommandService);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;surface.BeginLoad(</SPAN><SPAN style="COLOR: #0000ff">typeof</SPAN><SPAN style="COLOR: #000000">(Form));<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nb