<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Jack Dong .NET</title><subtitle type="text">不要承诺,不要誓言,只要用一杯茶的温度品茗一生的幸福！</subtitle><id>http://feed.cnblogs.com/blog/u/31781/rss</id><updated>2012-05-13T17:30:10Z</updated><author><name>Jack Dong .NET</name><uri>http://www.cnblogs.com/Dlonghow/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Dlonghow/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/31781/rss"/><entry><id>http://www.cnblogs.com/Dlonghow/archive/2012/05/08/2489449.html</id><title type="text">x:Null 标记扩展</title><summary type="text">最近开发一个自定义Silverlight Control时， 遇到一件莫名其妙的事情：我这里的自定义控件继承自ContentControl, 其样式定义如下：ViewCode&lt;StyleTargetType="dc:XXXX"&gt;&lt;SetterProperty="Cursor"Value="Hand"/&gt;&lt;SetterProperty="Template"&gt;&lt;Setter.Value&gt;&lt;ControlTemplateTargetType="dc:XXXX</summary><published>2012-05-07T20:00:00Z</published><updated>2012-05-07T20:00:00Z</updated><author><name>Jack Dong .NET</name><uri>http://www.cnblogs.com/Dlonghow/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Dlonghow/archive/2012/05/08/2489449.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Dlonghow/archive/2012/05/08/2489449.html"/><content type="html">&lt;p&gt;最近开发一个自定义Silverlight Control时， 遇到一件莫名其妙的事情：&lt;/p&gt;&lt;p&gt;我这里的自定义控件继承自ContentControl, 其样式定义如下：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;View&amp;nbsp;Code&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Style&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;TargetType&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="dc:XXXX"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Setter&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Property&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Cursor"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;Value&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Hand"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Setter&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Property&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Template"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ControlTemplate&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;TargetType&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="dc:XXXX"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="MainGrid"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;Margin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="&lt;/span&gt;&lt;span style="color: rgb(128, 128, 0);"&gt;{TemplateBinding&amp;nbsp;Padding}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ColumnDefinition&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ColumnDefinition&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ContentPresenter&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="ImagePresenter"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;Margin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="4,0"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;MinWidth&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="16"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;VerticalAlignment&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Center"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;HorizontalAlignment&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Center"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Content&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="&lt;/span&gt;&lt;span style="color: rgb(128, 128, 0);"&gt;{TemplateBinding&amp;nbsp;Image}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ContentPresenter&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="HeaderPresenter"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;Margin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="2,0,0,0"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;Grid.Column&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="1"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;VerticalAlignment&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Center"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Content&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="&lt;/span&gt;&lt;span style="color: rgb(128, 128, 0);"&gt;{TemplateBinding&amp;nbsp;Header}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;ContentTemplate&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="&lt;/span&gt;&lt;span style="color: rgb(128, 128, 0);"&gt;{TemplateBinding&amp;nbsp;HeaderTemplate}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;VisualStateManager.VisualStateGroups&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;VisualStateManager.VisualStateGroups&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ControlTemplate&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Style&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;使用这个控件，我对其ContentTemplate指定一个DataTemplate, 而运行后，ImagePresenter并没有显示一个有效的Image (尽管我可以保证DataBinding是没有问题的)。&lt;/p&gt;&lt;p&gt;但是ImagePresenter却莫名其妙的 显示了前面提到的DataTempalte的东西。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;经过推敲，大概是ImagePresenter这个ContentPresenter的ContentTemplate默认集成了父控件的ContentTemplate的值。 &lt;/p&gt;&lt;p&gt;那如何阻止它这样的默认的集成能力呢？&lt;/p&gt;&lt;p&gt;因为我发现 HeaderPresenter并没有像ImagePresenter元素那样， 而是显示了正常的值。不同的就在于HeaderPresenter指定了 ContentTemplate，似乎因为有指定，所以没有被默认为父控件的ContentTemplate的值。&lt;/p&gt;&lt;p&gt;所以，给ImagePresenter加上ContentTemplate的绑定语法， 但是它这里只是显示一个image 并不需要复杂的Template, 原则上只需要制定Content即可。那么有没有语法可以指定ImagePresenter的ContentTemplate为 &amp;#8220;Null&amp;#8221; 呢。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;x:Null 这个xaml的标记扩展，就是完成这件事情。&lt;/p&gt;&lt;p&gt;&amp;#8220;&lt;span style='font: 12px/18px "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; color: rgb(42, 42, 42); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;'&gt;将&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style='font: 12px/18px "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; color: rgb(42, 42, 42); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;' xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="input"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span style='font: 12px/18px "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; color: rgb(42, 42, 42); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;'&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;指定为通过 XAML 属性 (Attribute) 设置的属性 (Property) 的值。&lt;/span&gt;&amp;#8221;&lt;/p&gt;&amp;lt;object&amp;nbsp;property="{x:Null}"&amp;nbsp;.../&amp;gt;&lt;p&gt;&lt;a style="color: rgb(219, 113, 0); text-decoration: none;" id="57e06ac8-1a27-4758-a70e-bcc3bca36f46" class="LW_CollapsibleArea_TitleAhref" title="折叠" onclick="javascript:CA_Click('57e06ac8-1a27-4758-a70e-bcc3bca36f46','展开','折叠')" href="http://www.cnblogs.com/Dlonghow/admin/javascript:void(0)"&gt;&lt;span style="padding-left: 10px; word-break: break-all; word-wrap: break-word;" class="LW_CollapsibleArea_Title"&gt;备注&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="padding-top: 0px;" class="LW_CollapsibleArea_HrDiv"&gt;&lt;hr style="color: rgb(229, 229, 229);" class="LW_CollapsibleArea_Hr" /&gt;&lt;/div&gt;&lt;div style='font: 12px/normal "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; padding-bottom: 20px; padding-left: 15px; word-spacing: 0px; display: block; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;' id="57e06ac8-1a27-4758-a70e-bcc3bca36f46_c" class="sectionblock"&gt;&lt;a style="color: rgb(0, 112, 159); text-decoration: none;" id="languageReferenceRemarksToggle" xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;/a&gt;&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span id="xn2_757e70b735d4a36eaa4d7289972a427a" class="sentence"&gt;在许多托管编程语言中，null 引用的关键字是 null。&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span id="xn3_25581ba535543349ac6ed6686f368060" class="sentence"&gt;在 Visual Basic 中，null 引用的关键字是&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="input"&gt;Nothing&lt;/span&gt;&lt;/span&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span id="xn4_fc234d403dbc7e530b3090236e7f99e5" class="sentence"&gt;&lt;span xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="input"&gt;x:Null&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;标记扩展没有可设置的属性。&lt;/span&gt;&lt;/p&gt;&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span id="xn5_46d6362307fc721cdd9dfbc69b5fd063" class="sentence"&gt;请注意，&lt;span xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="input"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;不一定是引用类型依赖项属性的初始未设置值。&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span id="xn6_6988af066998f963b7e022e1a725f4f7" class="sentence"&gt;每个依赖项属性的初始默认值可以不同。&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span id="xn7_2cf8f55dd326ec67db355ac87801dc5a" class="sentence"&gt;许多依赖项属性由于它们的内部实现将不接受&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="input"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;作为值，不管是通过标记还是代码。&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span id="xn8_398544a867fe15671e4be70bda6832a3" class="sentence"&gt;在这种情况下，使用&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="input"&gt;x:Null&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;设置 XAML 属性值可导致分析程序异常。&lt;/span&gt;&lt;/p&gt;&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span id="xn9_0128418bbf0d4a82b018d99cde7cf313" class="sentence"&gt;&lt;span xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="input"&gt;x:Null&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;是标记扩展。&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span id="xn10_1c053f7b1c3637b1dd2d841c67f3a28a" class="sentence"&gt;XAML 中的标记扩展使用 XAML 处理器实现识别的 { 和 } 字符将对属性值的处理转义为非文字或处理程序引用。&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span id="xn11_0e4ed74bf881ad13bd15bb7ca37a89b9" class="sentence"&gt;特性语法是最常用于此标记扩展的语法。&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span id="xn12_6828fb81654e86ce504d5658fca723d5" class="sentence"&gt;&lt;span xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="input"&gt;x:Null&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;还可以在属性元素语法中使用。&lt;/span&gt;&lt;/p&gt;&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span id="xn13_92e9354d4281a663b6c02b48bbdbb196" class="sentence"&gt;某些 Silverlight 类型是可以为 null 的类型。&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span id="xn14_cde6eee7789d8b14c664a5edd53addd8" class="sentence"&gt;在可以为 null 的类型还没有将&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="input"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;作为默认值的情况下，可以使用&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="input"&gt;x:Null&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;在 XAML 中设置&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="input"&gt;null&lt;/span&gt;&lt;/span&gt;值。&lt;/span&gt;&lt;/p&gt;&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span id="xn15_71399edf245345de845fb19008993be5" class="sentence"&gt;如果目标为 Silverlight 3，则无法使用对象元素形式&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="code" xmlns="http://www.w3.org/1999/xhtml"&gt;&amp;lt;x:Null&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="sentence"&gt;&lt;span class="code" xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="sentence"&gt;&lt;span class="code" xmlns="http://www.w3.org/1999/xhtml"&gt;Jack.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="sentence"&gt;&lt;span class="code" xmlns="http://www.w3.org/1999/xhtml"&gt;2012-05-07 NJ. USA.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/Dlonghow/aggbug/2489449.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Dlonghow/archive/2012/05/08/2489449.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Dlonghow/archive/2012/03/16/2399993.html</id><title type="text">初识NuGet - 概念， 安装和使用</title><summary type="text">1. NuGet是什么？NuGet is a Visual Studio 2010 extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects that use the .NET Framework. This topic lists documentation that will help you use NuGet packages and create your own.NuGet 是一个Visual Studio的扩展。在使用Visual St</summary><published>2012-03-16T05:10:00Z</published><updated>2012-03-16T05:10:00Z</updated><author><name>Jack Dong .NET</name><uri>http://www.cnblogs.com/Dlonghow/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Dlonghow/archive/2012/03/16/2399993.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Dlonghow/archive/2012/03/16/2399993.html"/><content type="html">&lt;div&gt;&lt;span style="font-family: 微软雅黑, Verdana, sans-serif, 宋体; line-height: 22px; background-color: #f9f9f9; "&gt;1. NuGet是什么？&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: #232323; font-family: Verdana, Arial, helvetica, sans-seriff; line-height: 25px; background-color: #ffffff; "&gt;NuGet is a Visual Studio 2010 extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects that use the .NET Framework. This topic lists documentation that will help you use NuGet packages and create your own.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 微软雅黑, Verdana, sans-serif, 宋体; line-height: 22px; background-color: #f9f9f9; "&gt;NuGet 是一个Visual Studio的扩展。&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 微软雅黑, Verdana, sans-serif, 宋体; line-height: 22px; background-color: #f9f9f9; "&gt;在使用Visual Studio开发基于.NET Framework的应用时，NuGet能够令你在项目中添加、移除和更新引用的工作变得更加快捷方便。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;这就是说: 我们往往在开发项目里，会使用一些第三方的dll, 如：Newtonsoft.Json.dll (它为我们提供了进行序列化和反序列化解决方案， 很有用，也很稳定，还很有名气)。&lt;/p&gt;&lt;p&gt;但是，我们往往也面临随着项目升级，对这些引入的第三方插件进行升级的可能和必要。&lt;/p&gt;&lt;p&gt;比方说，原本的项目是vs2008 + C# 3.5 实现的，并引入了Newtonsoft.Json.dll 2.0版本， 现在对项目升级成了Vs 2010 + C# 4.0。&lt;/p&gt;&lt;p&gt;如果 你想或者必须将旧版本升级到最新版本才能工作或者仅是保持版本上的一致；&amp;nbsp;同时，Newtonsoft 提供Json.Net对C# 4.0 支持版本，即：Newtonsoft.Json.dll 4.0。&lt;/p&gt;&lt;p&gt;你就需要到官网或者通过Google 去寻找它的最新版本，下载，解压，然后替代等操作。 似乎看上去，也没多少复杂的事情，&amp;nbsp;也习以为常了。谁叫咱引用别人的东西，只能跟着走了，习惯了这样的更新，总比自己写更快吧。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;现在，NuGet 将这个过程系统化，令你可以更加方便的查找你要的第三方的dll， 同时，还可以为你提供自动或者手动更新，而无需你在人肉搜索与更新了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. 官方网站：www.nuget.org&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; CodePlex:&amp;nbsp;http://nuget.codeplex.com/&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. 安装：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;打开Visual Studio 2010, Tools-&amp;gt; Extensions Manager... （&lt;span class="Apple-style-span" style="font-family: 微软雅黑, Verdana, sans-serif, 宋体; line-height: 22px; background-color: #f9f9f9; "&gt;工具-&amp;gt;扩展管理器&lt;/span&gt;）， 打开 vs扩展管理库，选择 Online Gallery (联机库)， 既可以在右上角搜索 &amp;#8220;NuGet&amp;#8221;。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/1.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;选择&amp;#8220;NuGet Packge Manager&amp;#8221;, 点击右上角的 Install，既可以完成安装，安装完成后，即为 绿色的对号。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;4 . 举例：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;新建一个项目，这里我们就简单创建一个Web Application:&lt;/p&gt;&lt;p&gt;我打算在这个项目中，添加Newtonsoft.Json.dll。&lt;/p&gt;&lt;p&gt;我不再通过传统方式，下载解压并copy到项目中再引用。而是通过NuGet提供的方式实现：&lt;/p&gt;&lt;p&gt;NuGet提供了两种方式添加（至少我值知道是两种方式）:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第一种&amp;nbsp;&lt;/strong&gt;通过 "Add Library Package Reference..." 添加，如下图所示：&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/3.png" width="331" height="126" alt="" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;点击 &amp;#8216;Add Library Package Reference...&amp;#8217; , 搜索你要添加的Package的名称：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/4.png" alt="" width="600" height="400" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;点击 "Install" 按钮， 安装这个Package。 这是你将发现NuGet为你当前的项目自动引入了最新的 Newtonsoft.Json.dll 动态链接库。&lt;/p&gt;&lt;p&gt;这时，你就可以使用它了。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第二种 &lt;span class="Apple-style-span" style="font-family: 微软雅黑, Verdana, sans-serif, 宋体; line-height: 22px; background-color: #f9f9f9; "&gt;使用Package Manager Console为项目添加该引用：&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-family: 微软雅黑, Verdana, sans-serif, 宋体; line-height: 22px; background-color: #f9f9f9; "&gt;从VS2010的主菜单-&amp;gt;Tools-&amp;gt;Library Package Manager-&amp;gt;Package Manager Console，打开Package Manager控制台：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/5.png" width="800" height="558" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;假设我们知道 Newtonsoft.Json 在NuGet上的名称， 我们可以使用下面命令安装引用：&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-family: 微软雅黑, Verdana, sans-serif, 宋体; line-height: 22px; background-color: #f9f9f9; "&gt;Install-Package&amp;nbsp;&lt;/span&gt;Newtonsoft.Json&lt;/p&gt;&lt;p&gt;回车后，NuGet将自动为你下载并添加引用。 同时，控制台为你提示如下信息：&lt;/p&gt;&lt;div&gt;&lt;p&gt;&amp;nbsp;PM&amp;gt; Install-Package Newtonsoft.Json&lt;/p&gt;&lt;div&gt;&lt;div&gt;Successfully installed 'Newtonsoft.Json 4.0.8'.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Successfully added 'Newtonsoft.Json 4.0.8' to WebApplication2.&amp;nbsp;&lt;/p&gt;&lt;p&gt;你还可以通过这两种 方式更新引用为最新版本。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5. 创建自己的&amp;nbsp;&lt;span class="Apple-style-span" style="color: #232323; font-family: 微软雅黑; line-height: 23px; background-color: #ffffff; font-size: small; "&gt;NuGet Server。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果你是一个大公司的程序设计人员，你设计了解决某一问题的 解决方案即一个良好的会被同事频繁使用的动态链接库中NuGet.Demo.dll，你将它放置在公司共享的某个磁盘文件夹下，并email通知大家最新的更新等。&lt;/p&gt;&lt;p&gt;这个dll一直有你维护和更新，以往大家也就会得到你的email通知, 根据自己的需求，到上文说的文件夹下copy并删除当前旧的dll&lt;font class="Apple-style-span" color="#232323" face="微软雅黑" size="2"&gt;&lt;span class="Apple-style-span" style="line-height: 23px;"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;如今我们可以通过NuGet Server提供的手段，帮我们更加自动和人性化的简化并更加方便这一工作场景：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;那么，如何创建这个自己公司的NuGet Server。&lt;/p&gt;&lt;p&gt;我们新创建一个 工程：Infoshare.Projects.&lt;/p&gt;&lt;p&gt;然后通过上面的方法，打开Package Manager Console, 并输入如下命令并回车：&lt;/p&gt;&lt;p&gt;......&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong style="font-size: 10pt; "&gt;PM&amp;gt; Install-Package NuGet.Server&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;......&amp;nbsp;&lt;/p&gt;&lt;p&gt;这时，你会发现工程的Refernces 下添加了一个NuGet.Core的引用，它将为我们实现这一方案。&lt;/p&gt;&lt;p&gt;同时，添加了两个文件夹： &amp;#8220;DataServices&amp;#8221; &amp;nbsp;；&amp;#8220;Packages&amp;#8221; 和若干文件 以及一个WebForm "Default.aspx"，如下图所示：&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/6.png" alt="" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;运行，并查看Default.aspx页面：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/7.png" alt="" width="600" height="433" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;点击here，进入Packages页面， 你应该可以看到Package下&lt;span class="Apple-style-span" style="color: #232323; font-family: 微软雅黑; line-height: 23px; background-color: #ffffff; font-size: small; "&gt;包含的nuget包&lt;/span&gt;:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/8.png" width="600" height="427" alt="" /&gt;&lt;/p&gt;&lt;p&gt;但是，如上面显示并没有任何Feed 记录。这是因为在刚才的Infoshare.Projects的Packages文件夹下，并没有任何nuget包。&lt;/p&gt;&lt;p&gt;我们将上面通过NuGet的Packages Manager Cnsole添加的 NuGet 包，放到当前这个Infoshare.Projects的Packages文件夹下，&lt;/p&gt;&lt;p&gt;添加完成后如下图：&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/9.png" width="271" height="453" alt="" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;在运行查看：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/10.png" width="600" height="426" alt="" /&gt;&lt;/p&gt;&lt;p&gt;我们在项目中创建一个Class Library 命名为：&lt;strong&gt;Infoshare.Core&lt;/strong&gt;, 将作为公司普用的关键dll，通过NuGet Server进行管理。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/12.png" width="265" height="131" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;现在的问题是如何才能生成类似Newtonsoft.Json可供NuGet.Server使用的nuget包，即将自己的公司的dll打包成nuget包？&lt;/p&gt;&lt;p&gt;&amp;nbsp;这要用到NuGet提供的工具，你需要到&amp;nbsp;&lt;a href="http://nuget.codeplex.com/"&gt;http://nuget.codeplex.com/&lt;/a&gt;上面下载：&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/11.png" width="400" height="454" alt="" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;下载nuget.exe 后，你可以使用下面的方式进行打包：&lt;/p&gt;&lt;p&gt;&amp;nbsp;使用nuget.exe pack将工程文件打包， （命令："nuget pack"）：&lt;/p&gt;&lt;p&gt;&amp;nbsp;将下载的NuGet.exe放到Infoshare.Core的工程文件夹下：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/13.png" width="400" height="157" alt="" /&gt;&lt;/p&gt;&lt;p&gt;执行如下命令：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/14.png" width="600" height="388" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;将生成的 &lt;strong&gt;Infoshare.Core.1.0.0.0.nupkg&amp;nbsp;&lt;/strong&gt;文件和相应的Infoshare.Core.dll 拷贝到 Infoshare.Projects下的Packages文件夹下：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/15.png" width="266" height="363" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;在运行查看defalut.aspx:&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/16.png" alt="" width="600" height="296" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;那么如何像NuGet Server那样，可以通过&amp;#8220;Add Library Package Reference...&amp;#8221;，弹出Library Reference 搜索和安装对话框？&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 16px; background-color: #ffffff; "&gt;这就要向 NuGet 添加更多程序包源， 即添加你的NuGet Server程序包源。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 16px; background-color: #ffffff; "&gt;通过&amp;#8220;Tools&amp;#8221;（工具）|&amp;#8220;Library Package Manager&amp;#8221;（库程序包管理器）|&amp;#8220;Package Manager Settings&amp;#8221;（程序包管理器设置）菜单选项，单击&amp;#8220;Package Sources&amp;#8221;（程序包源）节点，&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/19.png" width="550" height="319" alt="" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;今天突然看到网上又一遍更加系统和全面的讲解阅读： &lt;a href="http://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx"&gt;使用NuGet 管理项目库&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://files.cnblogs.com/Dlonghow/Source%20Code/Infoshare.Projects.rar"&gt;代码下载：&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Jack &lt;/p&gt;&lt;p&gt;2012-3-16 北京&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Dlonghow/aggbug/2399993.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Dlonghow/archive/2012/03/16/2399993.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Dlonghow/archive/2012/02/22/2362877.html</id><title type="text">jQuery 实现一个简单的信息反馈或者信息收集的页面</title><summary type="text">部分技术： jquery + Form validation + .NET handler + ASP.NET Email notification.页面为简单的纯HTML + Js 定义，提交表单通过jQuery 进行表单验证，提示友好的验证信息。表单验证成功 ，使用jQuery ajax 提交到ASP.NET 后台代码 Handler Page进行后台数据处理。Handler Page 收集请求中的Form 数据， 将完成两件事情：1. 将Form表单中的数据，保存到数据库数据表中； （这里没有提供实现）2. 将此次请求通过Email的形式发送到相应邮箱，可以在web.config中定义。</summary><published>2012-02-22T03:52:00Z</published><updated>2012-02-22T03:52:00Z</updated><author><name>Jack Dong .NET</name><uri>http://www.cnblogs.com/Dlonghow/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Dlonghow/archive/2012/02/22/2362877.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Dlonghow/archive/2012/02/22/2362877.html"/><content type="html">&lt;p&gt;部分技术： jquery + Form validation + .NET handler + ASP.NET Email notification.&lt;/p&gt;&lt;p&gt;页面为简单的纯HTML + Js 定义，提交表单通过jQuery 进行表单验证，提示友好的验证信息。&lt;/p&gt;&lt;p&gt;表单验证成功 ，使用jQuery ajax 提交到ASP.NET 后台代码 Handler Page进行后台数据处理。&lt;/p&gt;&lt;p&gt;Handler Page 收集请求中的Form 数据， 将完成两件事情：&lt;/p&gt;&lt;p&gt;1. 将Form表单中的数据，保存到数据库数据表中； （这里没有提供实现）&lt;/p&gt;&lt;p&gt;2. 将此次请求通过Email的形式发送到相应邮箱，可以在web.config中定义。 这里使用ASP.NET邮件发送技术。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;详细信息参见如下截图，并提供本程序全部代码的下载，供参考和完善。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Page:&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/request_more_info_form.png" alt="" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;表单提交验证通过后，将页面信息存储到数据库，并发送邮件通知。。。。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;邮件样式如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/request_more_info_email.png" width="1263" height="613" alt="" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;发送email的代码：&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/request_more_info_email_net.png" alt="" /&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&amp;nbsp;本人能力有限，请提出你的宝贵意见。&lt;/div&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://files.cnblogs.com/Dlonghow/Source%20Code/RequestMoreInfo.rar"&gt;【这里下载】&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Jack. &amp;nbsp;&lt;/p&gt;&lt;p&gt;北京&lt;/p&gt;&lt;p&gt;Wednesday, February 22, 2012 11:57:35&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Dlonghow/aggbug/2362877.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Dlonghow/archive/2012/02/22/2362877.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Dlonghow/archive/2011/11/12/2246128.html</id><title type="text">将DataTable保存到数据库的数据表中</title><summary type="text">1staticvoidMain(string[]args)2{3DataTable_data=newDataTable();4OleDbConnectiondbConnection=newOleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;"+@"DataSource=D:\MyWork\PawnShop\JewelryDB.xls;"+@"ExtendedProperties=""Excel8.0;HDR=Yes;""");5dbConnect</summary><published>2011-11-11T22:26:00Z</published><updated>2011-11-11T22:26:00Z</updated><author><name>Jack Dong .NET</name><uri>http://www.cnblogs.com/Dlonghow/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Dlonghow/archive/2011/11/12/2246128.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Dlonghow/archive/2011/11/12/2246128.html"/><content type="html">&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Main(&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;[]&amp;nbsp;args)&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataTable&amp;nbsp;_data&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;DataTable();&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OleDbConnection&amp;nbsp;dbConnection&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;OleDbConnection(&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Provider=Microsoft.Jet.OLEDB.4.0;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Data&amp;nbsp;Source=D:\My&amp;nbsp;Work\Pawn&amp;nbsp;Shop\Jewelry&amp;nbsp;DB.xls;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Extended&amp;nbsp;Properties=""Excel&amp;nbsp;8.0;HDR=Yes;""&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dbConnection.Open();&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;List&amp;lt;string&amp;gt;&amp;nbsp;_Fields&amp;nbsp;=&amp;nbsp;new&amp;nbsp;List&amp;lt;string&amp;gt;()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"ID","Date","Time","Last&amp;nbsp;Name","First&amp;nbsp;Name","DOB","Street","Town","State","Zip","DL/Passport&amp;nbsp;#","Phone&amp;nbsp;#","Items&amp;nbsp;Sold","Photo&amp;nbsp;Link","Suspicious","Associates","Notes","Store","Receipt&amp;nbsp;#","Price"&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;};&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OleDbDataAdapter&amp;nbsp;dbAdapter&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;OleDbDataAdapter(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;[Sheet3$]&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;dbConnection);&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dbAdapter.Fill(_data);&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(_data&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;_data.Rows.Count&amp;nbsp;&amp;gt;&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SqlBulkCopy&amp;nbsp;bcp&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;SqlBulkCopy(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;server=10.1.1.33;database=PawnShop_DTS_20110712;uid=sa;pwd=infoshare&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bcp.DestinationTableName&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;pawn_sale_2&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bcp.WriteToServer(_data);&lt;br /&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;finally&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dbConnection.Close();&lt;br /&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/Dlonghow/aggbug/2246128.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Dlonghow/archive/2011/11/12/2246128.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Dlonghow/archive/2011/04/20/2022009.html</id><title type="text">C# 泛型详解</title><summary type="text">我们在编写程序时，经常遇到两个模块的功能非常相似，只是一个是处理int数据，另一个是处理string数据，或者其他自定义的数据类型，但我们没有办法，只能分别写多个方法处理每个数据类型，因为方法的参数类型不同。有没有一种办法，在方法中传入通用的数据类型，这样不就可以合并代码了吗？泛型的出现就是专门解决这个问题的。读完本篇文章，你会对泛型有更深的了解。为什么要使用泛型为了了解这个问题，我们先看下面的代码，代码省略了一些内容，但功能是实现一个栈，这个栈只能处理int数据类型：public class Stack { private int[] m_item; public int Pop(){...</summary><published>2011-04-20T02:43:00Z</published><updated>2011-04-20T02:43:00Z</updated><author><name>Jack Dong .NET</name><uri>http://www.cnblogs.com/Dlonghow/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Dlonghow/archive/2011/04/20/2022009.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Dlonghow/archive/2011/04/20/2022009.html"/><content type="html">&lt;span class="Apple-style-span" style="color: #555555; font-family: Arial; font-size: 12px; line-height: 18px; "&gt;&lt;table style="table-layout: fixed; width: 806px; "&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: 18px; "&gt;&lt;div id="blog_text" class="cnt" style="font-family: Arial; word-wrap: break-word; word-break: normal; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px !important; line-height: 19px; overflow-x: hidden; overflow-y: hidden; position: relative !important; "&gt;我们在编写程序时，经常遇到两个模块的功能非常相似，只是一个是处理int数据，另一个是处理string数据，或者其他自定义的数据类型，但我们没有办法，只能分别写多个方法处理每个数据类型，因为方法的参数类型不同。有没有一种办法，在方法中传入通用的数据类型，这样不就可以合并代码了吗？泛型的出现就是专门解决这个问题的。读完本篇文章，你会对泛型有更深的了解。&amp;nbsp;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;为什么要使用泛型&lt;/strong&gt;&lt;br style="display: inline; line-height: normal; " /&gt;为了了解这个问题，我们先看下面的代码，代码省略了一些内容，但功能是实现一个栈，这个栈只能处理int数据类型：&lt;br style="display: inline; line-height: normal; " /&gt;public class Stack&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private int[] m_item;&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int Pop(){...}&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Push(int item){...}&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Stack(int i)&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.m_item = new int[i];&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br style="display: inline; line-height: normal; " /&gt;}&lt;br style="display: inline; line-height: normal; " /&gt;上面代码运行的很好，但是，当我们需要一个栈来保存string类型时，该怎么办呢？很多人都会想到把上面的代码复制一份，把int改成string不就行了。当然，这样做本身是没有任何问题的，但一个优秀的程序是不会这样做的，因为他想到若以后再需要long、Node类型的栈该怎样做呢？还要再复制吗？优秀的程序员会想到用一个通用的数据类型object来实现这个栈：&lt;br style="display: inline; line-height: normal; " /&gt;public class Stack&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private object[] m_item;&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public object Pop(){...}&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Push(object item){...}&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Stack(int i)&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.m_item = new[i];&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br style="display: inline; line-height: normal; " /&gt;这个栈写的不错，他非常灵活，可以接收任何数据类型，可以说是一劳永逸。但全面地讲，也不是没有缺陷的，主要表现在：&lt;br style="display: inline; line-height: normal; " /&gt;当Stack处理值类型时，会出现装箱、折箱操作，这将在托管堆上分配和回收大量的变量，若数据量大，则性能损失非常严重。&amp;nbsp;&lt;br style="display: inline; line-height: normal; " /&gt;在处理引用类型时，虽然没有装箱和折箱操作，但将用到数据类型的强制转换操作，增加处理器的负担。&amp;nbsp;&lt;br style="display: inline; line-height: normal; " /&gt;在数据类型的强制转换上还有更严重的问题（假设stack是Stack的一个实例）：&lt;br style="display: inline; line-height: normal; " /&gt;Node1 x = new Node1();&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stack.Push(x);&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node2 y = (Node2)stack.Pop();&lt;br style="display: inline; line-height: normal; " /&gt;上面的代码在编译时是完全没问题的，但由于Push了一个Node1类型的数据，但在Pop时却要求转换为Node2类型，这将出现程序运行时的类型转换异常，但却逃离了编译器的检查。&lt;br style="display: inline; line-height: normal; " /&gt;&lt;br style="display: inline; line-height: normal; " /&gt;针对object类型栈的问题，我们引入泛型，他可以优雅地解决这些问题。泛型用用一个通过的数据类型T来代替object，在类实例化时指定T的类型，运行时（Runtime）自动编译为本地代码，运行效率和代码质量都有很大提高，并且保证数据类型安全。&lt;br style="display: inline; line-height: normal; " /&gt;&lt;br style="display: inline; line-height: normal; " /&gt;&lt;strong&gt;使用泛型&lt;/strong&gt;&lt;br style="display: inline; line-height: normal; " /&gt;下面是用泛型来重写上面的栈，用一个通用的数据类型T来作为一个占位符，等待在实例化时用一个实际的类型来代替。让我们来看看泛型的威力：&lt;br style="display: inline; line-height: normal; " /&gt;public class Stack&amp;lt;T&amp;gt;&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private T[] m_item;&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public T Pop(){...}&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Push(T item){...}&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Stack(int i)&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.m_item = new T[i];&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br style="display: inline; line-height: normal; " /&gt;}&lt;br style="display: inline; line-height: normal; " /&gt;类的写法不变，只是引入了通用数据类型T就可以适用于任何数据类型，并且类型安全的。这个类的调用方法：&lt;br style="display: inline; line-height: normal; " /&gt;//实例化只能保存int类型的类&lt;br style="display: inline; line-height: normal; " /&gt;Stack&amp;lt;int&amp;gt; a = new Stack&amp;lt;int&amp;gt;(100);&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.Push(10);&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.Push("8888"); //这一行编译不通过，因为类a只接收int类型的数据&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int x = a.Pop();&lt;br style="display: inline; line-height: normal; " /&gt;&lt;br style="display: inline; line-height: normal; " /&gt;//实例化只能保存string类型的类&lt;br style="display: inline; line-height: normal; " /&gt;Stack&amp;lt;string&amp;gt; b = new Stack&amp;lt;string&amp;gt;(100);&lt;br style="display: inline; line-height: normal; " /&gt;b.Push(10);&amp;nbsp;&amp;nbsp;&amp;nbsp; //这一行编译不通过，因为类b只接收string类型的数据&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.Push("8888");&lt;br style="display: inline; line-height: normal; " /&gt;string y = b.Pop();&lt;br style="display: inline; line-height: normal; " /&gt;&lt;br style="display: inline; line-height: normal; " /&gt;这个类和object实现的类有截然不同的区别：&lt;br style="display: inline; line-height: normal; " /&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 他是类型安全的。实例化了int类型的栈，就不能处理string类型的数据，其他数据类型也一样。&lt;br style="display: inline; line-height: normal; " /&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 无需装箱和折箱。这个类在实例化时，按照所传入的数据类型生成本地代码，本地代码数据类型已确定，所以无需装箱和折箱。&lt;br style="display: inline; line-height: normal; " /&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 无需类型转换。&lt;br style="display: inline; line-height: normal; " /&gt;&lt;br style="display: inline; line-height: normal; " /&gt;&lt;strong style="color: red; "&gt;泛型类实例化的理论&lt;/strong&gt;&lt;br style="display: inline; line-height: normal; " /&gt;C#泛型类在编译时，先生成中间代码IL，通用类型T只是一个占位符。在实例化类时，根据用户指定的数据类型代替T并由即时编译器（JIT）生成本地代码，这个本地代码中已经使用了实际的数据类型，等同于用实际类型写的类，所以不同的封闭类的本地代码是不一样的。按照这个原理，我们可以这样认为：&lt;br style="display: inline; line-height: normal; " /&gt;泛型类的不同的封闭类是分别不同的数据类型。&lt;br style="display: inline; line-height: normal; " /&gt;例：Stack&amp;lt;int&amp;gt;和Stack&amp;lt;string&amp;gt;是两个完全没有任何关系的类，你可以把他看成类A和类B，这个解释对泛型类的静态成员的理解有很大帮助。&lt;br style="display: inline; line-height: normal; " /&gt;&lt;br style="display: inline; line-height: normal; " /&gt;&lt;strong style="color: red; "&gt;泛型类中数据类型的约束&lt;/strong&gt;&lt;br style="display: inline; line-height: normal; " /&gt;程序员在编写泛型类时，总是会对通用数据类型T进行有意或无意地有假想，也就是说这个T一般来说是不能适应所有类型，但怎样限制调用者传入的数据类型呢？这就需要对传入的数据类型进行约束，约束的方式是指定T的祖先，即继承的接口或类。因为C#的单根继承性，所以约束可以有多个接口，但最多只能有一个类，并且类必须在接口之前。这时就用到了C#2.0的新增关键字：&lt;br style="display: inline; line-height: normal; " /&gt;public class Node&amp;lt;T, V&amp;gt; where T : Stack, IComparable&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where V: Stack&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {...}&lt;br style="display: inline; line-height: normal; " /&gt;以上的泛型类的约束表明，T必须是从Stack和IComparable继承，V必须是Stack或从Stack继承，否则将无法通过编译器的类型检查，编译失败。&lt;br style="display: inline; line-height: normal; " /&gt;通用类型T没有特指，但因为C#中所有的类都是从object继承来，所以他在类Node的编写中只能调用object类的方法，这给程序的编写造成了困难。比如你的类设计只需要支持两种数据类型int和string，并且在类中需要对T类型的变量比较大小，但这些却无法实现，因为object是没有比较大小的方法的。 了解决这个问题，只需对T进行IComparable约束，这时在类Node里就可以对T的实例执行CompareTo方法了。这个问题可以扩展到其他用户自定义的数据类型。&lt;br style="display: inline; line-height: normal; " /&gt;如果在类Node里需要对T重新进行实例化该怎么办呢？因为类Node中不知道类T到底有哪些构造函数。为了解决这个问题，需要用到new约束：&lt;br style="display: inline; line-height: normal; " /&gt;public class Node&amp;lt;T, V&amp;gt; where T : Stack, new()&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where V: IComparable&lt;br style="display: inline; line-height: normal; " /&gt;需要注意的是，new约束只能是无参数的，所以也要求相应的类Stack必须有一个无参构造函数，否则编译失败。&lt;br style="display: inline; line-height: normal; " /&gt;C#中数据类型有两大类：引用类型和值类型。引用类型如所有的类，值类型一般是语言的最基本类型，如int, long, struct等，在泛型的约束中，我们也可以大范围地限制类型T必须是引用类型或必须是值类型，分别对应的关键字是class和struct:&lt;br style="display: inline; line-height: normal; " /&gt;public class Node&amp;lt;T, V&amp;gt; where T : class&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where V: struct&lt;br style="display: inline; line-height: normal; " /&gt;&lt;br style="display: inline; line-height: normal; " /&gt;&lt;strong style="color: red; "&gt;泛型方法&lt;/strong&gt;&lt;br style="display: inline; line-height: normal; " /&gt;泛型不仅能作用在类上，也可单独用在类的方法上，他可根据方法参数的类型自动适应各种参数，这样的方法叫泛型方法。看下面的类：&lt;br style="display: inline; line-height: normal; " /&gt;public class Stack2&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Push&amp;lt;T&amp;gt;(Stack&amp;lt;T&amp;gt; s, params T[] p)&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (T t in p)&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s.Push(t);&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br style="display: inline; line-height: normal; " /&gt;}&lt;br style="display: inline; line-height: normal; " /&gt;原来的类Stack一次只能Push一个数据，这个类Stack2扩展了Stack的功能（当然也可以直接写在Stack中），他可以一次把多个数据压入Stack中。其中Push是一个泛型方法，这个方法的调用示例如下：&lt;br style="display: inline; line-height: normal; " /&gt;Stack&amp;lt;int&amp;gt; x = new Stack&amp;lt;int&amp;gt;(100);&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stack2 x2 = new Stack2();&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x2.Push(x, 1, 2, 3, 4, 6);&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string s = "";&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; 5; i++)&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s += x.Pop().ToString();&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; //至此，s的值为64321&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br style="display: inline; line-height: normal; " /&gt;&lt;br style="display: inline; line-height: normal; " /&gt;&lt;strong style="color: red; "&gt;泛型中的静态成员变量&lt;/strong&gt;&lt;br style="display: inline; line-height: normal; " /&gt;在C#1.x中，我们知道类的静态成员变量在不同的类实例间是共享的，并且他是通过类名访问的。C#2.0中由于引进了泛型，导致静态成员变量的机制出现了一些变化：静态成员变量在相同封闭类间共享，不同的封闭类间不共享。&lt;br style="display: inline; line-height: normal; " /&gt;这也非常容易理解，因为不同的封闭类虽然有相同的类名称，但由于分别传入了不同的数据类型，他们是完全不同的类，比如：&lt;br style="display: inline; line-height: normal; " /&gt;Stack&amp;lt;int&amp;gt; a = new Stack&amp;lt;int&amp;gt;();&lt;br style="display: inline; line-height: normal; " /&gt;Stack&amp;lt;int&amp;gt; b = new Stack&amp;lt;int&amp;gt;();&lt;br style="display: inline; line-height: normal; " /&gt;Stack&amp;lt;long&amp;gt; c = new Stack&amp;lt;long&amp;gt;();&lt;br style="display: inline; line-height: normal; " /&gt;类实例a和b是同一类型，他们之间共享静态成员变量，但类实例c却是和a、b完全不同的类型，所以不能和a、b共享静态成员变量。&lt;br style="display: inline; line-height: normal; " /&gt;泛型中的静态构造函数&lt;br style="display: inline; line-height: normal; " /&gt;静态构造函数的规则：只能有一个，且不能有参数，他只能被.NET运行时自动调用，而不能人工调用。&lt;br style="display: inline; line-height: normal; " /&gt;泛型中的静态构造函数的原理和非泛型类是一样的，只需把泛型中的不同的封闭类理解为不同的类即可。以下两种情况可激发静态的构造函数：&lt;br style="display: inline; line-height: normal; " /&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 特定的封闭类第一次被实例化。&lt;br style="display: inline; line-height: normal; " /&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 特定封闭类中任一静态成员变量被调用。&lt;br style="display: inline; line-height: normal; " /&gt;&lt;br style="display: inline; line-height: normal; " /&gt;&lt;strong style="color: red; "&gt;泛型类中的方法重载&lt;/strong&gt;&lt;br style="display: inline; line-height: normal; " /&gt;方法的重载在.Net Framework中被大量应用，他要求重载具有不同的签名。在泛型类中，由于通用类型T在类编写时并不确定，所以在重载时有些注意事项，这些事项我们通过以下的例子说明：&lt;br style="display: inline; line-height: normal; " /&gt;public class Node&amp;lt;T, V&amp;gt;&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public T add(T a, V b)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //第一个add&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return a;&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public T add(V a, T b)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //第二个add&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return b;&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int add(int a, int b)&amp;nbsp;&amp;nbsp;&amp;nbsp; //第三个add&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return a + b;&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br style="display: inline; line-height: normal; " /&gt;}&lt;br style="display: inline; line-height: normal; " /&gt;上面的类很明显，如果T和V都传入int的话，三个add方法将具有同样的签名，但这个类仍然能通过编译，是否会引起调用混淆将在这个类实例化和调用add方法时判断。请看下面调用代码：&lt;br style="display: inline; line-height: normal; " /&gt;Node&amp;lt;int, int&amp;gt; node = new Node&amp;lt;int, int&amp;gt;();&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; object x = node.add(2, 11);&lt;br style="display: inline; line-height: normal; " /&gt;这个Node的实例化引起了三个add具有同样的签名，但却能调用成功，因为他优先匹配了第三个add。但如果删除了第三个add，上面的调用代码则无法编译通过，提示方法产生的混淆，因为运行时无法在第一个add和第二个add之间选择。&lt;br style="display: inline; line-height: normal; " /&gt;Node&amp;lt;string, int&amp;gt; node = new Node&amp;lt;string, int&amp;gt;();&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; object x = node.add(2, "11");&lt;br style="display: inline; line-height: normal; " /&gt;&amp;nbsp;&amp;nbsp; 这两行调用代码可正确编译，因为传入的string和int，使三个add具有不同的签名，当然能找到唯一匹配的add方法。&lt;br style="display: inline; line-height: normal; " /&gt;由以上示例可知，C#的泛型是在实例的方法被调用时检查重载是否产生混淆，而不是在泛型类本身编译时检查。同时还得出一个重要原则：&lt;br style="display: inline; line-height: normal; " /&gt;当一般方法与泛型方法具有相同的签名时，会覆盖泛型方法。&lt;br style="display: inline; line-height: normal; " /&gt;&lt;br style="display: inline; line-height: normal; " /&gt;&lt;strong style="color: red; "&gt;泛型类的方法重写&lt;/strong&gt;&lt;br style="display: inline; line-height: normal; " /&gt;方法重写（override）的主要问题是方法签名的识别规则，在这一点上他与方法重载一样，请参考泛型类的方法重载。&lt;br style="display: inline; line-height: normal; " /&gt;&lt;br style="display: inline; line-height: normal; " /&gt;&lt;span style="color: red; "&gt;&lt;strong&gt;泛型的使用范围&lt;/strong&gt;&lt;/span&gt;&lt;br style="display: inline; line-height: normal; " /&gt;本文主要是在类中讲述泛型，实际上，泛型还可以用在类方法、接口、结构（struct）、委托等上面使用，使用方法大致相同，就不再讲述。&lt;br style="display: inline; line-height: normal; " /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;小结&lt;br style="display: inline; line-height: normal; " /&gt;C# 泛型是开发工具库中的一个无价之宝。它们可以提高性能、类型安全和质量，减少重复性的编程任务，简化总体编程模型，而这一切都是通过优雅的、可读性强的语法完成的。尽管 C# 泛型的根基是 C++ 模板，但 C# 通过提供编译时安全和支持将泛型提高到了一个新水平。C# 利用了两阶段编译、元数据以及诸如约束和一般方法之类的创新性的概念。毫无疑问，C# 的将来版本将继续发展泛型，以便添加新的功能，并且将泛型扩展到诸如数据访问或本地化之类的其他 .NET Framework 领域。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/Dlonghow/aggbug/2022009.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Dlonghow/archive/2011/04/20/2022009.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Dlonghow/archive/2011/02/04/1949103.html</id><title type="text">简化自己的一个工程，共享给大家：Silverlight  做的Link Map</title><summary type="text">提醒一下哦，这里的Map其实是Graph的概念。一年来一直使用Silverlight做应用程序开发，期间一个典型的应用在犯罪调查系统中将相关实体可视化的呈现出来，供客户直观获取相应信息。新年了，难得闲暇一些时间，此将该工程简化，共享给大家参考。这里我将其命名为Link Map Easy.这是工程文件的结构：效果图如下：项目涉及的文件与上面的UI图，对照：Views:EasyEntity.xaml -- Node 节点；EasyLine.xaml -- Line 线；EasyBoard.cs -- 绘图区，是一个Canvas, 即白色展示区；EasyProperty.cs -- 右侧属性框，当选</summary><published>2011-02-03T22:39:00Z</published><updated>2011-02-03T22:39:00Z</updated><author><name>Jack Dong .NET</name><uri>http://www.cnblogs.com/Dlonghow/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Dlonghow/archive/2011/02/04/1949103.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Dlonghow/archive/2011/02/04/1949103.html"/><content type="html">&lt;p&gt;提醒一下哦，这里的Map其实是Graph的概念。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;一年来一直使用Silverlight做应用程序开发，期间一个典型的应用在犯罪调查系统中将相关实体可视化的呈现出来，供客户直观获取相应信息。&lt;/p&gt;&lt;p&gt;新年了，难得闲暇一些时间，此将该工程简化，共享给大家参考。&lt;/p&gt;&lt;p&gt;这里我将其命名为Link Map Easy.&lt;/p&gt;&lt;p&gt;这是工程文件的结构：&lt;/p&gt;&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/linkmap_1.jpg" width="411" height="818" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;效果图如下：&lt;/p&gt;&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/linkmap_2.jpg" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;项目涉及的文件与上面的UI图，对照：&lt;/p&gt;&lt;p&gt;&lt;span style="color: red"&gt;&lt;strong&gt;Views:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;EasyEntity.xaml -- Node 节点；&lt;/p&gt;&lt;p&gt;EasyLine.xaml -- Line 线；&lt;/p&gt;&lt;p&gt;EasyBoard.cs -- 绘图区，是一个Canvas, 即白色展示区；&lt;/p&gt;&lt;p&gt;EasyProperty.cs -- 右侧属性框，当选择Node节点或Line线时，将显示相应的属性列表，可以适当修改，以改变实体的效果；&lt;/p&gt;&lt;p&gt;EasyMenuBox.cs -- 顶部的菜单框，只有两个自定义的toolbar button, Add &amp;amp; Delete;&lt;/p&gt;&lt;p&gt;EasyWorkspace -- 这个类将衔接各个部分 （Menu &amp;amp; Board &amp;amp; Property Box）;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red"&gt;&lt;strong&gt;Utils:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;首先做一些简单说明：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;工程里，我将要显示的实体用xml做了一些定义， 当然可以写到数据库中，便于维护。 &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;这些定义包括：属于哪个类（Object Type）;&amp;nbsp;&amp;nbsp;自我属性定义 即：&amp;nbsp;EntityType&amp;nbsp;- 定义了其名称，所在类，以及icon等。 可以参见以下xml&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;/span&gt;&lt;p&gt;&lt;span&gt;ObjectType --&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/linkmap3.jpg" width="588" height="199" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;EntityType:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/dlonghow/%E6%9C%AC%E7%AB%99%E9%9A%8F%E7%AC%94%E6%8F%90%E4%BE%9B/linkmap_4.jpg" width="747" height="205" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Object Type &amp;amp; HxObjectType -- 用来承载ObjectType.xml中的数据和管理工作；&lt;/p&gt;&lt;p&gt;EntityType &amp;amp; HxEntityType -- 用来承载EntityType.xml中的数据和管理工作；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UI中的PropertyBox的palette 和 Type的数据就来自这个文件。&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000"&gt;&lt;u&gt;&amp;nbsp;基于这两个文件， 你可以对其进行扩展。&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;其他的都是一些帮助性的类。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;这是我利用业余时间简化出来的（Link Map Esay）， 它包含了以下几点功能：&lt;/p&gt;&lt;p&gt;1. Node 和Line的创建。 UI中Line的创建方法为：鼠标移到Node的中心，将会出现一个红色节圆点，这时 你按住红色远点不放随意方向拖动即可，当你在下一个Node上松开时，将建立两者的连线；&lt;/p&gt;&lt;p&gt;2. Node 和Line的随意拖动。&lt;/p&gt;&lt;p&gt;3. 选择功能，在空白处按住鼠标不放随意方向拖动， 将可以实现多个节点的选择， 基于此可以进行多个节点和线的同时移动。&lt;/p&gt;&lt;p&gt;4.Delete功能。 这里我没有加上快捷键，这个很简单， 有兴趣可以自己稍加定义，调用相关方法即可。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;基于这些功能，其实在工程里有很多可以继续操作的地方， 也同时可以拓展相关功能。&lt;/p&gt;&lt;p&gt;比如，&lt;/p&gt;&lt;p&gt;1.Node和Line的caption 修改下换个Control，你可以实现对其编辑的功能；&lt;/p&gt;&lt;p&gt;2.利用Silverlight 3中新增的 WriteableBitmap你可以实现读出图片，甚至打印；&lt;/p&gt;&lt;p&gt;3.了解了工程使用的数据实体定义，你可以将这个Graph （EasyMeta）序列化，然后保存成你自己定义的文件里；再增加个加载文件生成Graph的功能，也不错。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;工程简单，但是结构尚且清晰，适合Silverlgiht初中级程序员。&lt;/p&gt;&lt;p&gt;用得到了，可以参考，用不到可以提提建议， 都可。&lt;/p&gt;&lt;p&gt;具体可以下载来&amp;#8220;研究&amp;#8221;下， 有什么建议或者疑问，都欢迎。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;我已经将bin下生成的文件移除，你需要安装silverlight 3.0以上的toolkit (3.4 &amp;amp; 4.0 都可以).&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://files.cnblogs.com/Dlonghow/Source%20Code/LinkMap.Easy.rar"&gt;【这里下载】&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Jack.&lt;/p&gt;&lt;p&gt;2011-02-03 新泽西。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Dlonghow/aggbug/1949103.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Dlonghow/archive/2011/02/04/1949103.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Dlonghow/archive/2010/11/12/1875321.html</id><title type="text">Silverlight 与 HTML 交互 一览</title><summary type="text">silverlight包含了一些列可以模仿HTML中DOM的类，这些类可以让silverlight和在同一界面内的HTML元素交互。比如:读取一个控件的值，更新一个文本值或者向HTML页面中添加一个新的元素。这些类都在System.Windows.Brower命名空间下，下边有几个重要的类 HtmlPage HtmlPage代表了整个silverlight寄宿的HTML页面，是和HTML交互的起点...</summary><published>2010-11-11T20:03:00Z</published><updated>2010-11-11T20:03:00Z</updated><author><name>Jack Dong .NET</name><uri>http://www.cnblogs.com/Dlonghow/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Dlonghow/archive/2010/11/12/1875321.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Dlonghow/archive/2010/11/12/1875321.html"/><content type="html">&lt;p&gt;silverlight包含了一些列可以模仿HTML中DOM的类，这些类可以让silverlight和在同一界面内的HTML元素交互。比如:读取一个控件的值，更新一个文本值或者向HTML页面中添加一个新的元素。这些类都在System.Windows.Brower命名空间下，下边有几个重要的类&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: arial, helvetica, sans-serif"&gt;&lt;font face=""&gt;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;HtmlPage&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial"&gt;&amp;nbsp; &lt;/span&gt;HtmlPage&lt;span style="font-family: arial, helvetica, sans-serif"&gt;&lt;span style="font-size: 14pt"&gt;&lt;span style="font-size: 10pt"&gt;&lt;font face=""&gt;代表了整个silverlight寄宿的HTML页面，是和HTML交互的起点。它提供了和HTML交互(Document属性)，获取浏览器信息(BrowserInfo属性)，和当前浏览器窗口交互(Windows属性)以及注册允许javascript调用的silverlight方法(RegisterCreateableType()和RegisterScriptableTyp()方法)&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 10pt"&gt;的成员。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 10pt"&gt;&amp;nbsp; &lt;/span&gt;BrowserInformation&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 10pt"&gt;&lt;span style="font-family: arial, helvetica, sans-serif; font-size: 14pt"&gt;&lt;font face=""&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="font-family: 宋体; font-size: 10pt"&gt;提供一些关于运行silverlight程序的浏览器信息,包括浏览器名称,版本,和操作系统。可以通过HtmlPage.BrowserInfomattion属性来获取一个BrowserInfomation类的实例。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 10pt"&gt;&lt;span style="font-family: arial, helvetica, sans-serif; font-size: 14pt"&gt;&lt;span style="font-family: 宋体; font-size: 10pt"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;HtmlDocument&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 10pt"&gt;&lt;span style="font-family: arial, helvetica, sans-serif; font-size: 14pt"&gt;&lt;span style="font-family: 宋体; font-size: 10pt"&gt;&amp;nbsp;HtmlDocument代表了一个完整的HTML文档。可以通过HtmlPage.Document属性获取一个代表当前HTML页面的HtmlDocument实例。可以用HtmlDocument对象来探索页面的结构和内容(包括HtmlElement对象的内嵌元素)。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;HtmlElement&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 10pt"&gt;&lt;span style="font-family: arial, helvetica, sans-serif; font-size: 14pt"&gt;&lt;span style="font-family: 宋体; font-size: 10pt"&gt;&amp;nbsp;HtmlElement可以表示页面中的HTML元素。可以用类似于SetAttribute()和SetProperty()等方法来操作这些元素。通常在HtmlDocument对象中获取HtmlElement对象。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;HtmlWindow&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 10pt"&gt;&lt;span style="font-family: arial, helvetica, sans-serif; font-size: 14pt"&gt;&lt;span style="font-family: 宋体; font-size: 10pt"&gt;HtmlWindow代表了浏览器窗口，并且提供一些方法来跳转到一个新的界面或跳到同一个页面的不同部分。通常通过HtmlPage.Window属性来获取silverlight寄宿页面的HtmlWindow类的实例。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;HttpUtility&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 10pt"&gt;&lt;span style="font-family: arial, helvetica, sans-serif; font-size: 14pt"&gt;&lt;span style="font-family: 宋体; font-size: 10pt"&gt;HttpUtility为一些HTML相关的任务，包括HTML encoding和decoding(让文本在页面安全的显示)和URL encoding和decoding(使URL中的字符串安全-比如，作为一个查询字符串)。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;ScriptableTypeAttribute和ScriptableMemberAttribute&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 10pt"&gt;&lt;span style="font-family: arial, helvetica, sans-serif; font-size: 14pt"&gt;&lt;span style="font-family: 宋体; font-size: 10pt"&gt;这两个类允许你在silverlight中暴露一些可以让在HTML的javascript访问的类和方法。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;ScriptObject&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 10pt"&gt;&lt;span style="font-family: arial, helvetica, sans-serif; font-size: 14pt"&gt;&lt;span style="font-family: 宋体; font-size: 10pt"&gt;ScriptObject代表了定义在页面的javascript函数并允许在silverlight程序中调用这个方法。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Dlonghow/aggbug/1875321.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Dlonghow/archive/2010/11/12/1875321.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Dlonghow/archive/2010/07/03/1770302.html</id><title type="text">HTML元素(标签)大全及使用说明 （整）</title><summary type="text">a:表示超链接的起始或目的位置。acronym:表示取首字母的缩写词。address:表示特定信息，如地址、签名、作者、文档信息。applet:在页面上放置可执行内容。area:定义一个客户端图像映射中一个超级链接区域的形状、坐标和关联 URL。b:指定文本应以粗体显示。base:指定一个显式 URL 用于解析对于外部源的链接和引用，如图像和样式表。basefont:设置显示文本时作为默认字体的基...</summary><published>2010-07-02T18:59:00Z</published><updated>2010-07-02T18:59:00Z</updated><author><name>Jack Dong .NET</name><uri>http://www.cnblogs.com/Dlonghow/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Dlonghow/archive/2010/07/03/1770302.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Dlonghow/archive/2010/07/03/1770302.html"/><content type="html">&lt;div id="m3ba3"&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;a&lt;/strong&gt;:表示超链接的起始或目的位置。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;acronym&lt;/strong&gt;:表示取首字母的缩写词。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;address&lt;/strong&gt;:表示特定信息，如地址、签名、作者、文档信息。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;applet&lt;/strong&gt;:在页面上放置可执行内容。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;area&lt;/strong&gt;:定义一个客户端图像映射中一个超级链接区域的形状、坐标和关联 URL。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;b&lt;/strong&gt;:指定文本应以粗体显示。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;base&lt;/strong&gt;:指定一个显式 URL 用于解析对于外部源的链接和引用，如图像和样式表。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;basefont&lt;/strong&gt;:设置显示文本时作为默认字体的基础字体值。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;bdo&lt;/strong&gt;:允许作者为选定文本片断禁用双向法则。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;bgsound&lt;/strong&gt;:使页面能够带有背景声音或配音。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;big&lt;/strong&gt;:指定所含文本要以比当前字体稍大的字体显示。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;blockquote&lt;/strong&gt;:表示文本中的一段引用语。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;body&lt;/strong&gt;:指明文档主体的开始和结束。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;br&lt;/strong&gt;:插入一个换行符。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;button&lt;/strong&gt;:指定一个容器，其中所含的 HTML 会被显示为一个按钮。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;caption&lt;/strong&gt;:表格的标题，对表格的简单描述。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;center&lt;/strong&gt;:将指定文本和图像居中显示。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;cite&lt;/strong&gt;:用斜体显示标明引文。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;code&lt;/strong&gt;:表示代码范例。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;col&lt;/strong&gt;:说明基于列的表格缺省属性。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;colgroup&lt;/strong&gt;:说明表格中一列或一组列的缺省属性。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;comment&lt;/strong&gt;:表示不可见的注释。防止所包含的文本或者HTML源代码被浏览器解析和显示。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;dd&lt;/strong&gt;:在定义列表中表示定义。定义通常在定义列表中缩进显示。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;del&lt;/strong&gt;:表示文本已经从文档中删除。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;dfn&lt;/strong&gt;:表示术语的定义。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;dir&lt;/strong&gt;:表示目录列表。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;div&lt;/strong&gt;:表示一块可显示 HTML 的区域&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;dl&lt;/strong&gt;:表示定义列表。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;dt&lt;/strong&gt;:在定义列表中表示定义术语。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;em&lt;/strong&gt;:强调文本，通常以斜体显示。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;embed&lt;/strong&gt;:允许嵌入任何类型的文档。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;fieldset&lt;/strong&gt;:在字段集包含的文本和其它元素外面画一个方框。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;font&lt;/strong&gt;:用于说明所包含文本的新字体、大小和颜色。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;form&lt;/strong&gt;:说明所包含的控件是某个表单的组成部分。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;frame&lt;/strong&gt;:在 FRAMESET 元素内表示单个框架。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;frameset&lt;/strong&gt;:表示一个框架集，用于组织多个框架和嵌套框架集。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;head&lt;/strong&gt;:提供了关于文档的无序信息集合。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;hn&lt;/strong&gt;:以标题样式显示文本。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;hr&lt;/strong&gt;:画一条横线。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;html&lt;/strong&gt;:表明文档包含 HTML 元素。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;i&lt;/strong&gt;:指定文本应以斜体显示。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;iframe&lt;/strong&gt;:创建内嵌漂浮框架。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;img&lt;/strong&gt;:在文档中嵌入图像或视频片断。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;input&lt;/strong&gt;:创建各种表单输入控件。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;input type=button&lt;/strong&gt;:创建按钮控件。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;input type=checkbox&lt;/strong&gt;:创建复选框控件。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;input type=file&lt;/strong&gt;:创建文件上载控件，该控件带有一个文本框和一个浏览按钮。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;input type=hidden&lt;/strong&gt;:传输关于客户/服务器交互的状态信息。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;input type=image&lt;/strong&gt;:创建一个图像控件，该控件被点击后将导致表单立即被提交。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;input type=password&lt;/strong&gt;:创建与 INPUT type=text 控件类似的单行文本输入控件，不过并不显示用户输入的内容。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;input type=radio&lt;/strong&gt;:创建单选钮控件。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;input type=reset&lt;/strong&gt;:创建一个按钮，点击该按钮后，将重置表单控件回其初始值。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;input type=submit&lt;/strong&gt;:创建一个按钮，点击该按钮后，即提交表单。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;input type=text&lt;/strong&gt;:创建一个单行的文本输入控件。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;ins&lt;/strong&gt;:表示插入到文档中的文本。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;isindex&lt;/strong&gt;:使浏览器显示一个对话框，提示用户输入单行文本。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;kbd&lt;/strong&gt;:以定宽字体显示文本。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;label&lt;/strong&gt;:为页面上的其它元素指定标签。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;legend&lt;/strong&gt;:在 fieldSet 对象绘制的方框内插入一个标题。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;li&lt;/strong&gt;:表示列表中的一个项目。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;link&lt;/strong&gt;:允许当前文档和外部文档建立连接。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;listing&lt;/strong&gt;:以固定宽度的字体显示文本。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;map&lt;/strong&gt;:包含客户端图像映射的坐标数据。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;marqueee&lt;/strong&gt;:创建一个滚动的文本字幕。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;menu&lt;/strong&gt;:创建一个无序列表。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;meta&lt;/strong&gt;:向服务器和客户端传达关于文档的隐藏信息。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;nobr&lt;/strong&gt;:不换行显示文本。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;noframes&lt;/strong&gt;:包含对于那些不支持 FRAMESET 元素的浏览器使用的 HTML。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;noscript&lt;/strong&gt;:指定在不支持脚本的浏览器中显示的 HTML。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;object&lt;/strong&gt;:在 HTML 页面中插入对象。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;ol&lt;/strong&gt;:编制排序列表。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;optgroup&lt;/strong&gt;:允许作者对 select 元素中的选项进行逻辑分组。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;option&lt;/strong&gt;:表示 SELECT 元素中的一个选项。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;p&lt;/strong&gt;:表示一段。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;param&lt;/strong&gt;:设置 APPLET、EMBED 或 OBJECT 元素的属性初始值。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;pre&lt;/strong&gt;:以固定宽度字体显示文本。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;q&lt;/strong&gt;:分离文本中的引语。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;s&lt;/strong&gt;:带删除线方式显示文本。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;samp&lt;/strong&gt;:表示代码范例。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;script&lt;/strong&gt;:指定由脚本引擎解释的页面中的脚本。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;select&lt;/strong&gt;:表示一个列表框或者一个下拉框。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;small&lt;/strong&gt;:指定内含文本要以比当前字体稍小的字体显示。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;span&lt;/strong&gt;:指定内嵌文本容器。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;strike&lt;/strong&gt;:带删除线显示文本。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;strong&lt;/strong&gt;:以粗体显示文本。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;style&lt;/strong&gt;:指定页面的样式表。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;sub&lt;/strong&gt;:说明内含文本要以下标的形式显示，比当前字体稍小。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;sup&lt;/strong&gt;:说明内含文本要以上标的形式显示，比当前字体稍小。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;table&lt;/strong&gt;:说明所含内容组织成含有行和列的表格形式。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;tbody&lt;/strong&gt;:指明哪些行作为表格的主体。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;td&lt;/strong&gt;:指定表格中的单元格。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;textarea&lt;/strong&gt;:多行文本输入控件。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;tfoot&lt;/strong&gt;:指明哪些行作为表尾。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;th&lt;/strong&gt;:指定标题列。标题列将在单元格中居中并以粗体显示。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;thead&lt;/strong&gt;:指定哪些行作为表头。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;title&lt;/strong&gt;:文档的标题。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;tr&lt;/strong&gt;:指定表格中的一行。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;tt&lt;/strong&gt;:以固定宽度字体显示文本。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;u&lt;/strong&gt;:带下划线显示文本。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;ul&lt;/strong&gt;:表示不排序的项目列表。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;var&lt;/strong&gt;:定义程序变量，通常以斜体显示。&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #0066ff; font-size: 16px"&gt;wbr&lt;/strong&gt;:向一块 NOBR 文本中插入软换行。&lt;/p&gt;&lt;/div&gt; &lt;img src="http://www.cnblogs.com/Dlonghow/aggbug/1770302.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Dlonghow/archive/2010/07/03/1770302.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Dlonghow/archive/2010/07/03/1770296.html</id><title type="text">DOM节点方法介绍</title><summary type="text">obj.appendChild(newe) 将子节点添加父节点的末尾。obj：要添加的节点的父元素引用；newe：要添加的新节点。注意：本人发现，在添加子节点的时候不能对其父节点进行引用，如果引用其父节点，就行造成溢出（好像是用这个词吧）现象，而导致浏览器崩溃。obj.cloneNode(boolen) 得到当前节点的副本obj：当前节点的引用； boolen：布尔值，true：包括当前节点的子节...</summary><published>2010-07-02T18:06:00Z</published><updated>2010-07-02T18:06:00Z</updated><author><name>Jack Dong .NET</name><uri>http://www.cnblogs.com/Dlonghow/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Dlonghow/archive/2010/07/03/1770296.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Dlonghow/archive/2010/07/03/1770296.html"/><content type="html">&lt;div id="m3ba3"&gt;&lt;strong&gt;&lt;span&gt;obj.appendChild(newe)&lt;/span&gt; 将子节点添加父节点的末尾。&lt;/strong&gt;&lt;br /&gt;obj：要添加的节点的父元素引用；newe：要添加的新节点。&lt;br /&gt;&lt;span&gt;注意：&lt;/span&gt;本人发现，在添加子节点的时候不能对其父节点进行引用，如果引用其父节点，就行造成溢出（好像是用这个词吧）现象，而导致浏览器崩溃。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size='\\\"\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"3\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\"\\\"'&gt;&lt;span&gt;obj.cloneNode(boolen) &lt;/span&gt;&lt;/font&gt;得到当前节点的副本&lt;/strong&gt;&lt;br /&gt;obj：当前节点的引用； boolen：布尔值，true：包括当前节点的子节点；false：不包括。返回值为对当前节点的引用.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size='\\\"\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"3\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\"\\\"'&gt;&lt;span&gt;obj.hasChildNodes() &lt;/span&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp; 检测当前节点时否有子节点。返回值为布尔值：true表示有，false表示没有。&lt;br /&gt;&lt;/strong&gt;obj：要进行检测的节点。其实有时也可以用 childNodes.length 属性进行检测，只是此属性返回值为节点数量。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size='\\\"\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"3\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\"\\\"'&gt;&lt;span&gt;obj.parentNode.insertBefore(newe.obj)&lt;/span&gt;&lt;/font&gt; 在当前节点之前插入一个新节点。&lt;/strong&gt;&lt;br /&gt;obj：当前节点的引用；ocument.getElementById("tdiv").childNodes(2) 可提供一个字节点位置变量，就可随意放在任何位置。&lt;br /&gt;parentNode：对当前节点的父节点的引用，因为此方法是在当前节点之前插入一个新节点，就等于在其父节点下插一个字节点，所以要对其父进行引用，我们不需要知道其父节点的信息，只需要用到parentNode属性。&lt;br /&gt;newe：要插入的新节点。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size='\\\"\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"3\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\"\\\"'&gt;&lt;span&gt;obj.parentNode.removeChild(obj) &lt;/span&gt;&lt;/font&gt;删除一个子节点&lt;/strong&gt;&lt;br /&gt;obj.parentNode：对要删除的子节点的父节点的引用，其原理同&amp;#8221;obj.parentNode.insertBefore(newe.obj)&amp;#8220;类似。&lt;br /&gt;obj：要删除的子节点。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font size='\\\"\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"3\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\"\\\"'&gt;&lt;span&gt;obj.parentNode.replaceChild(newe,obj)&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 用新节点替换旧节点&lt;/strong&gt;&lt;br /&gt;obj.parentNode：对要被替换掉的子节点的父节点的引用，其原理同上。&lt;br /&gt;newe：用于替换旧节点的新节点。&lt;br /&gt;obj：被替换掉的旧节点。&lt;/div&gt;&lt;img src="http://www.cnblogs.com/Dlonghow/aggbug/1770296.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Dlonghow/archive/2010/07/03/1770296.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Dlonghow/archive/2010/07/03/1770295.html</id><title type="text">JavaScript对象、属性、事件手册查询 (整)</title><summary type="text">windows对象 每个HTML文档的顶层对象. 属性 frames[] 子桢数组.每个子桢数组按源文档中定义的顺序存放. feames.length 子桢个数. self 当前窗口. parent 父窗口(当前窗口是中一个子窗口). top 顶层窗口(是所有可见窗口的父窗口). status 浏览器状态窗口上的消息. defaultStatus 当status无效时,出现在浏览器状态窗口上的缺省消息. name 内部名,为由window.open()方法打开的窗口定义的名字.windows方法 alert("message") 显示含有给定消息的"JavaScr</summary><published>2010-07-02T18:04:00Z</published><updated>2010-07-02T18:04:00Z</updated><author><name>Jack Dong .NET</name><uri>http://www.cnblogs.com/Dlonghow/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Dlonghow/archive/2010/07/03/1770295.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Dlonghow/archive/2010/07/03/1770295.html"/><content type="html">&lt;p&gt;&lt;strong&gt;windows对象&lt;br /&gt;&lt;/strong&gt;每个HTML文档的顶层对象.&lt;br /&gt;属性 &lt;br /&gt;frames[] 子桢数组.每个子桢数组按源文档中定义的顺序存放.&lt;br /&gt;feames.length 子桢个数.&lt;br /&gt;self 当前窗口.&lt;br /&gt;parent 父窗口(当前窗口是中一个子窗口).&lt;br /&gt;top 顶层窗口(是所有可见窗口的父窗口).&lt;br /&gt;status 浏览器状态窗口上的消息.&lt;br /&gt;defaultStatus 当status无效时,出现在浏览器状态窗口上的缺省消息.&lt;br /&gt;name 内部名,为由window.open()方法打开的窗口定义的名字.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;windows方法 &lt;br /&gt;&lt;/strong&gt;alert("message") 显示含有给定消息的"JavaScript Alert"对话框.&lt;br /&gt;confirm("message") 显示含有给定消息的"Confirm"对话框(有一个OK按钮和一个Cancel按钮).如果用户单击OK返回true,否则返回false.&lt;br /&gt;prompt("message") 显示一个"prompt"对话框,要求用户根据显示消息给予相应输入. &lt;br /&gt;open("URL","name") 打开一个新窗口,给予一个指定的名字.&lt;br /&gt;close() 关闭当前窗口.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;frame对象&lt;/strong&gt;&lt;br /&gt;它是整个浏览器窗口的子窗口,除了status,defaultStatus,name属性外,它拥有window对象的全部属性.&lt;br /&gt;location对象&lt;br /&gt;含有当前URL的信息.&lt;br /&gt;属性 &lt;br /&gt;href 整个URL字符串.&lt;br /&gt;protocol 含有URL第一部分的字符串,如http:&lt;br /&gt;host 包含有URL中主机名:端口号部分的字符串.如//www.shimianren.com/ask/&lt;br /&gt;hostname 包含URL中主机名的字符串.如http://&lt;font color="#000000"&gt;www.shimianren.com&lt;/font&gt;&lt;br /&gt;port 包含URL中可能存在的端口号字符串.&lt;br /&gt;pathname URL中"/"以后的部分.如~list/index.htm&lt;br /&gt;hash "#"号(CGI参数)之后的字符串.&lt;br /&gt;search "?"号(CGI参数)之后的字符串.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;document对象&lt;/strong&gt;&lt;br /&gt;含有当前文档信息的对象.&lt;br /&gt;属性 &lt;br /&gt;title 当前文档标题,如果未定义,则包含"Untitled".&lt;br /&gt;location 文档的全URL.&lt;br /&gt;lastModified 含有文档最后修改日期.&lt;br /&gt;referrer 调用者URL,即用户是从哪个URL链接到当前页面的.&lt;br /&gt;bgColor 背景色(#xxxxxx)&lt;br /&gt;fgColor 前景文本颜色.&lt;br /&gt;linkColor 超链接颜色.&lt;br /&gt;vlinkColor 访问过的超链颜色.&lt;br /&gt;alinkColor 激活链颜色(鼠标按住未放时).&lt;br /&gt;forms[] 文档中form对象的数组,按定义次序存储.&lt;br /&gt;forms.length 文档中的form对象数目.&lt;br /&gt;links[] 与文档中所有HREF链对应的数组对象,按次序定义存储.&lt;br /&gt;links.length 文档中HREF链的数目.&lt;br /&gt;anchors[] 锚(...)数组,按次序定义存储.&lt;br /&gt;anchors.length 文档中锚的数目.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;方法&lt;/strong&gt; &lt;br /&gt;write("string") 将字符串突出给当前窗口.(字符串可以含有HTML标记)&lt;br /&gt;writeln("string") 与write()类似,在结尾追加回车符,只在预定格式文本中(&amp;lt;PRE&amp;gt;...&amp;lt;/PRE&amp;gt;或&amp;lt;XMP&amp;gt;...&amp;lt;/XMP&amp;gt;)生效.&lt;br /&gt;clear() 清当前窗口.&lt;br /&gt;close() 关闭当前窗口.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;form对象&lt;/strong&gt;&lt;br /&gt;属性 &lt;br /&gt;name &lt;br /&gt;中的NAME属性的字符串值.&lt;br /&gt;method 中METHOD属性的类值,"0"="GET" ,"1"="POST" .&lt;br /&gt;action 中ACTION属性的字符串值.&lt;br /&gt;target 表格数据提交的目标,与标记中相应属性一致.&lt;br /&gt;elements[index] elements属性包含form中的各个元素.&lt;br /&gt;length 表格中的元素个数.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;方法&lt;/strong&gt; &lt;br /&gt;submit() 提交表格.&lt;br /&gt;事件处理器onSubmit() 用户单击一个定义好的按钮提交form时运行的代码.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;text和textarea对象&lt;/strong&gt;&lt;br /&gt;属性 &lt;br /&gt;name NAME属性的字符串值.&lt;br /&gt;value 域内容的字符串值.&lt;br /&gt;defaultValue 域内容的初始字符串值.&lt;/p&gt;&lt;p&gt;方法 &lt;br /&gt;focus() 设置对象输入焦点.&lt;br /&gt;blur() 从对象上移走输入焦点.&lt;br /&gt;select() 选定对象的输入区域.&lt;/p&gt;&lt;p&gt;事件处理器 &lt;br /&gt;onFocus 当输入焦点进入时执行.&lt;br /&gt;onBlur 当域失去焦点时执行.&lt;br /&gt;onSelect 当域中有部分文本被选定时执行.&lt;br /&gt;onChange 当域失去焦点且域值相对于onFocus执行有所改变时执行.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;复选框(checkbox)对象&lt;/strong&gt;&lt;br /&gt;属性 &lt;br /&gt;name NAME属性的字符串值.&lt;br /&gt;value 复选框内容的字符串值.如果设置了,则为"on",否则为"off".&lt;br /&gt;checked 复选框内容的布尔值.如果设置了,则为true,否则为false .&lt;br /&gt;defaultChecked 反映(CHECKED)属性的布尔值(缺省状态).&lt;/p&gt;&lt;p&gt;方法 &lt;br /&gt;click() 选定复选框,并使之状态为"on".&lt;/p&gt;&lt;p&gt;事件处理器 &lt;br /&gt;onClick 当用户单击Checkbox时执行.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;单选按钮(radio)对象&lt;/strong&gt;&lt;br /&gt;属性 &lt;br /&gt;name NAME属性的字符串值.&lt;br /&gt;length radio对象中单选按钮的个数.&lt;br /&gt;value VALUE属性的字符串值.&lt;br /&gt;checked 布尔值,按下为true,否则为false .&lt;br /&gt;defaultChecked 反映CHECKED属性值的布尔值.&lt;/p&gt;&lt;p&gt;方法 &lt;br /&gt;click() 选定单选按钮.&lt;/p&gt;&lt;p&gt;事件处理器 &lt;br /&gt;onClick 当单选按钮被选定时执行.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;select对象&lt;/strong&gt;&lt;br /&gt;属性 &lt;br /&gt;length select对象中对象的个数.&lt;br /&gt;name 由NAME=属性定义的select对象的内部名.&lt;br /&gt;selectedIndex select对象中当前被选option的下标.&lt;br /&gt;options 该属性对应于在HTML中定义select对象时标记中的内容,它有如下属性:&lt;br /&gt;text 标记后的文本串.&lt;br /&gt;value VALUE属性的值,当Submit按钮被按下时,该值被提交.&lt;br /&gt;defaultSelected 反映标记的SELECTED属性的布尔值.&lt;br /&gt;selected 反映option的当前选择状态的布尔值.&lt;/p&gt;&lt;p&gt;事件处理器 &lt;br /&gt;onFocus 当输入焦点进入域时执行.&lt;br /&gt;onBlur 当域失去输入焦点时执行.&lt;br /&gt;onChange 当域失去焦点且如果域的值相对于onFocus执行时有所改变,则执行onChange.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Button对象&lt;/strong&gt;&lt;br /&gt;表格中有三种类型按钮,由&amp;lt;INPUT&amp;gt;标记中的TYPE属性定义:&lt;br /&gt;.submit (type="SUBMIT")&lt;br /&gt;.reset (type="RESET")&lt;br /&gt;.custom (type="BUTTON")&lt;br /&gt;所有按钮对象都有如下成分:&lt;br /&gt;属性 &lt;br /&gt;value VALUE属性的字符串值.&lt;br /&gt;name NAME属性的字符串值.&lt;/p&gt;&lt;p&gt;方法 &lt;br /&gt;click() 选定按钮&lt;/p&gt;&lt;p&gt;事件处理器 &lt;br /&gt;onClick 当按钮被单击时执行.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;submit和reset对象&lt;/strong&gt;&lt;br /&gt;属性 &lt;br /&gt;value VALUE=属性的内容.&lt;br /&gt;name NAME=属性的内容.&lt;/p&gt;&lt;p&gt;方法 &lt;br /&gt;click() 选定按钮&lt;/p&gt;&lt;p&gt;事件处理器 &lt;br /&gt;onClick 当按钮被单击时执行.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;password对象&lt;/strong&gt;&lt;br /&gt;属性 &lt;br /&gt;defaultValue VALUE=属性的内容.&lt;br /&gt;name NAME=属性的内容.&lt;br /&gt;value 目前输入password域的数据.&lt;/p&gt;&lt;p&gt;方法 &lt;br /&gt;focus() 将焦点带入password域.&lt;br /&gt;blur 将焦点从password域移出.&lt;br /&gt;select() 选定password域中的当前数据,以备修改.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;navigator对象&lt;/strong&gt;&lt;br /&gt;该对象用于确定用户访问时使用的Navigator版本.&lt;br /&gt;属性 &lt;br /&gt;appCodeName 相对于用户浏览器的"codename"&lt;br /&gt;appName 相对于用户浏览器的实际名字.&lt;br /&gt;appVersion 相对于用户浏览器的版本号.&lt;br /&gt;userAgent 该属性反映用户浏览器的全部信息.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;history对象&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; history.go(-1)，返回上一页&lt;/p&gt;&lt;p&gt;&lt;strong&gt;string对象&lt;/strong&gt;&lt;br /&gt;string对象为操作字符串的内容提供了很多方法.&lt;br /&gt;属性 &lt;br /&gt;length 字符串的长度,即字符串中字符的个数.&lt;/p&gt;&lt;p&gt;方法 &lt;br /&gt;big(),blink(),bold(),fixed(),italics(),small(),sub(),strike(),sup(),fontColor(color),fontSize(size)&lt;br /&gt;以上方法为字符串增加相应的HTML标记.&lt;br /&gt;charAt(index) 返回字符串中index处的字符.&lt;br /&gt;indexOf(searchValue,[fromIndex]) 该方法在字符串中寻找第一次出现的searchValue.如果给定了fromIndex,则从&lt;br /&gt;字符串内该位置开始搜索,当searchValue找到后,返回该串第一个字符的位置.&lt;br /&gt;lastIndexOf(searchValue,[fromIndex]) 从字符串的尾部向前搜索searchValue,并报告找到的第一个实例.&lt;br /&gt;substring(indexA,indexB) 获取自indexA到indexB的子串.&lt;br /&gt;toLowerCase(),toUpperCase() 将字符串中所有字符全部转换成大写,小写.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Date对象&lt;/strong&gt;&lt;br /&gt;要使用Date对象,必须先生成一个Date实例:&lt;br /&gt;变量名=new Date();&lt;br /&gt;方法 &lt;br /&gt;getDay(),getDate(),getHours(),getMinutes(),getMonth(),getSeconds(),getTime(),&lt;br /&gt;getTimeZoneOffset(),getYear()&lt;br /&gt;还有setDay... ...&lt;br /&gt;toGMTString() 用GMT格式返回当前时间. (Sun,12 Feb 1999 14:19:22 GMT)&lt;br /&gt;toLocaleString 用locale格式返回当前时间. (03/11/99 14:19:22)&lt;br /&gt;parse(date) 将普通date字符串转换成豪秒形式,从而给setTime()做参数.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Math对象&lt;/strong&gt;&lt;br /&gt;属性 &lt;br /&gt;LN10 (10的自然对数)&lt;br /&gt;PI (3.1415926...)&lt;br /&gt;SQRT1_2 (1/2的平方根)&lt;br /&gt;方法&lt;br /&gt;abs(x) 返回x的绝对值&lt;br /&gt;acos(x) 返回x的arc cosine值&lt;br /&gt;asin(x) 返回x的arc sin值&lt;br /&gt;atan(x) 返回x的arc tangent值&lt;br /&gt;ceil(x) 返回大于等于x的最小整数&lt;br /&gt;cos(x) 返回x的cosine值&lt;br /&gt;exp(x) 返回e的x次方&lt;br /&gt;floor(x) 返回小于等于x的最大整数&lt;br /&gt;log(x) 返回x的&lt;br /&gt;max(x,y) 返回x,y中的大值&lt;br /&gt;min(x,y) 返回x,y中的小值&lt;br /&gt;pow(x,y) 返回x的y次方&lt;br /&gt;round(x) 舍入到最近整数,(小于或等于0.5小数舍去)&lt;br /&gt;sin(x) 返回x的sin值&lt;br /&gt;sqrt(x) 返回x的平方根&lt;br /&gt;tan(x) 返回x的tangent值&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;javascript事件查询综合&lt;/strong&gt;&lt;br /&gt;click()&amp;nbsp;&amp;nbsp;&amp;nbsp; 对象.click()&amp;nbsp;&amp;nbsp;&amp;nbsp; 使对象被点击。&lt;br /&gt;closed&amp;nbsp;&amp;nbsp;&amp;nbsp; 对象.closed&amp;nbsp;&amp;nbsp;&amp;nbsp; 对象窗口是否已关闭true/false&lt;br /&gt;clearTimeout(对象) 清除已设置的setTimeout对象&lt;br /&gt;clearInterval(对象) 清除已设置的setInterval对象&lt;br /&gt;confirm("提示信息") 弹出确认框，确定返回true取消返回false&lt;br /&gt;cursor:样式&amp;nbsp;&amp;nbsp; 更改鼠标样式 hand crosshair text wait help default auto e/s/w/n-resize&lt;/p&gt;&lt;p&gt;event.clientX&amp;nbsp;&amp;nbsp; 返回最后一次点击鼠标X坐标值；&lt;br /&gt;event.clientY&amp;nbsp;&amp;nbsp; 返回最后一次点击鼠标Y坐标值；&lt;br /&gt;event.offsetX&amp;nbsp;&amp;nbsp; 返回当前鼠标悬停X坐标值&lt;br /&gt;event.offsetY&amp;nbsp;&amp;nbsp; 返回当前鼠标悬停Y坐标值&lt;/p&gt;&lt;p&gt;document.write(document.lastModified)&amp;nbsp;&amp;nbsp; 网页最后一次更新时间&lt;br /&gt;document.ondblclick=x&amp;nbsp;&amp;nbsp; 当双击鼠标产生事件&lt;br /&gt;document.onmousedown=x&amp;nbsp;&amp;nbsp; 单击鼠标键产生事件&lt;/p&gt;&lt;p&gt;document.body.scrollTop; 返回和设置当前竖向滚动条的坐标值，须与函数配合,&lt;br /&gt;document.body.scrollLeft; 返回和设置当前横向滚动务的坐标值，须与函数配合，&lt;br /&gt;document.title&amp;nbsp;&amp;nbsp; document.title="message"; 当前窗口的标题栏文字&lt;br /&gt;document.bgcolor document.bgcolor="颜色值"; 改变窗口背景颜色&lt;br /&gt;document.Fgcolor document.Fgcolor="颜色值"; 改变正文颜色&lt;br /&gt;document.linkcolor document.linkcolor="颜色值"; 改变超联接颜色&lt;br /&gt;document.alinkcolor document.alinkcolor="颜色值"; 改变正点击联接的颜色&lt;br /&gt;document.VlinkColor document.VlinkColor="颜色值"; 改变已访问联接的颜色&lt;br /&gt;document.forms.length 返回当前页form表单数&lt;br /&gt;document.anchors.length 返回当前页锚的数量&lt;br /&gt;document.links.length 返回当前页联接的数量&lt;br /&gt;document.onmousedown=x 单击鼠标触发事件&lt;br /&gt;document.ondblclick=x 双击鼠标触发事件&lt;br /&gt;defaultStatus&amp;nbsp;&amp;nbsp; window.status=defaultStatus; 将状态栏设置默认显示&lt;/p&gt;&lt;p&gt;function&amp;nbsp;&amp;nbsp; function xx(){...}&amp;nbsp;&amp;nbsp; 定义函数&lt;br /&gt;isNumeric&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 判断是否是数字&lt;br /&gt;innerHTML&amp;nbsp;&amp;nbsp; xx=对象.innerHTML&amp;nbsp;&amp;nbsp; 输入某对象标签中的html源代码&lt;br /&gt;innerText&amp;nbsp;&amp;nbsp; divid.innerText=xx&amp;nbsp;&amp;nbsp; 将以div定位以id命名的对象值设为XX&lt;/p&gt;&lt;p&gt;location.reload(); 使本页刷新，target可等于一个刷新的网页&lt;/p&gt;&lt;p&gt;Math.random()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 随机涵数,只能是0到1之间的数,如果要得到其它数,可以为*10,再取整&lt;br /&gt;Math.floor(number) 将对象number转为整数，舍取所有小数&lt;br /&gt;Math.min(1,2)&amp;nbsp;&amp;nbsp; 返回1,2哪个小&lt;br /&gt;Math.max(1,2)&amp;nbsp;&amp;nbsp; 返回1,2哪个大&lt;/p&gt;&lt;p&gt;navigator.appName 返回当前浏览器名称&lt;br /&gt;navigator.appVersion 返回当前浏览器版本号&lt;br /&gt;navigator.appCodeName 返回当前浏览器代码名字&lt;br /&gt;navigator.userAgent 返回当前浏览器用户代标志&lt;/p&gt;&lt;p&gt;onsubmit&amp;nbsp;&amp;nbsp; onsubmit="return(xx())"&amp;nbsp;&amp;nbsp; 使用函数返回值&lt;br /&gt;opener&amp;nbsp;&amp;nbsp;&amp;nbsp; opener.document.对象&amp;nbsp;&amp;nbsp; 控制原打开窗体对象&lt;/p&gt;&lt;p&gt;prompt&amp;nbsp;&amp;nbsp;&amp;nbsp; xx=window.prompt("提示信息","预定值"); 输入语句&lt;br /&gt;parent&amp;nbsp;&amp;nbsp;&amp;nbsp; parent.框架名.对象 控制框架页面&lt;/p&gt;&lt;p&gt;return&amp;nbsp;&amp;nbsp; return false&amp;nbsp;&amp;nbsp;&amp;nbsp; 返回值&lt;br /&gt;random&amp;nbsp;&amp;nbsp;&amp;nbsp; 随机参数（0至1之间）&lt;br /&gt;reset()&amp;nbsp;&amp;nbsp;&amp;nbsp; form.reset();&amp;nbsp;&amp;nbsp;&amp;nbsp; 使form表单内的数据重置&lt;/p&gt;&lt;p&gt;split("")&amp;nbsp;&amp;nbsp; string.split("")&amp;nbsp;&amp;nbsp; 将string对象字符以逗号隔开&lt;br /&gt;submit()&amp;nbsp;&amp;nbsp; form对象.submit()&amp;nbsp;&amp;nbsp; 使form对象提交数据&lt;/p&gt;&lt;p&gt;String对象的&amp;nbsp;&amp;nbsp; charAt(x)对象 反回指定对象的第多少位的字母&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lastIndexOf("string") 从右到左询找指定字符，没有返回-1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; indexOf("string") 从左到右询找指定字符，没有返回-1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LowerCase()&amp;nbsp;&amp;nbsp; 将对象全部转为小写 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UpperCase()&amp;nbsp;&amp;nbsp; 将对象全部转为大写&lt;br /&gt;substring(0,5)&amp;nbsp;&amp;nbsp; string.substring(x,x)&amp;nbsp;&amp;nbsp; 返回对象中从0到5的字符&lt;br /&gt;setTimeout("function",time) 设置一个超时对象&lt;br /&gt;setInterval("function",time) 设置一个超时对象&lt;/p&gt;&lt;p&gt;toLocaleString() x.toLocaleString()&amp;nbsp;&amp;nbsp; 从x时间对象中获取时间，以字符串型式存在&lt;br /&gt;typeof(变量名)&amp;nbsp;&amp;nbsp;&amp;nbsp; 检查变量的类型，值有：String,Boolean,Object,Function,Underfined&lt;/p&gt;&lt;p&gt;window.event.button==1/2/3 鼠标键左键等于1右键等于2两个键一起按为3&lt;br /&gt;window.screen.availWidth 返回当前屏幕宽度(空白空间)&lt;br /&gt;window.screen.availHeight 返回当前屏幕高度(空白空间)&lt;br /&gt;window.screen.width&amp;nbsp;&amp;nbsp; 返回当前屏幕宽度(分辨率值)&lt;br /&gt;window.screen.height&amp;nbsp;&amp;nbsp; 返回当前屏幕高度(分辨率值)&lt;br /&gt;window.document.body.offsetHeight; 返回当前网页高度&lt;br /&gt;window.document.body.offsetWidth; 返回当前网页宽度&lt;br /&gt;window.resizeTo(0,0)&amp;nbsp;&amp;nbsp; 将窗口设置宽高&lt;br /&gt;window.moveTo(0,0)&amp;nbsp;&amp;nbsp; 将窗口移到某位置&lt;br /&gt;window.focus()&amp;nbsp;&amp;nbsp; 使当前窗口获得焦点&lt;br /&gt;window.scroll(x,y) 窗口滚动条坐标，y控制上下移动，须与函数配合&lt;br /&gt;window.open()&amp;nbsp;&amp;nbsp; window.open("地址","名称","属性") &lt;br /&gt;属性:toolbar(工具栏),location(地址栏),directions,status(状态栏),menubar(菜单栏),scrollbar(滚动条),resizable(改变大小),&amp;nbsp;&amp;nbsp; width(宽),height),fullscreen(全屏),scrollbars(全屏时无滚动条无参 数,channelmode(宽屏),left(打开窗口x坐标),top(打开窗口y坐标)&lt;/p&gt;&lt;p&gt;window.location = 'view-source:' + window.location.href&amp;nbsp;&amp;nbsp; 应用事件查看网页源代码;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;a=new Date();&amp;nbsp; //创建a为一个新的时期对象&lt;br /&gt;y=a.getYear(); //y的值为从对象a中获取年份值 两位数年份&lt;br /&gt;y1=a.getFullYear(); //获取全年份数 四位数年份&lt;br /&gt;m=a.getMonth();&amp;nbsp; //获取月份值&lt;br /&gt;d=a.getDate();&amp;nbsp; //获取日期值&lt;br /&gt;d1=a.getDay();&amp;nbsp; //获取当前星期值&lt;br /&gt;h=a.getHours();&amp;nbsp; //获取当前小时数&lt;br /&gt;m1=a.getMinutes(); //获取当前分钟数&lt;br /&gt;s=a.getSeconds(); //获取当前秒钟数&lt;/p&gt;&lt;p&gt;&lt;br /&gt;对象.style.fontSize="文字大小";&lt;br /&gt;单位：mm/cm/in英寸/pc帕/pt点/px象素/em文字高&lt;br /&gt;1in=1.25cm&lt;br /&gt;1pc=12pt&lt;br /&gt;1pt=1.2px(800*600分辩率下)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;文本字体属性：&lt;/strong&gt;&lt;br /&gt;fontSize大小&lt;br /&gt;family字体&lt;br /&gt;color颜色&lt;br /&gt;fontStyle风格，取值为normal一般,italic斜体,oblique斜体且加粗&lt;br /&gt;fontWeight加粗,取值为100到900不等,900最粗,light,normal,bold&lt;br /&gt;letterSpacing间距,更改文字间距离,取值为,1pt,10px,1cm&lt;br /&gt;textDecoration:文字修饰;取值,none不修饰,underline下划线,overline上划线&lt;br /&gt;background:文字背景颜色,&lt;br /&gt;backgroundImage:背景图片,取值为图片的插入路径&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;点击网页正文函数调用触发器：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1.onClick 当对象被点击&lt;br /&gt;2.onLoad 当网页打开,只能书写在body中&lt;br /&gt;3.onUnload 当网页关闭或离开时,只能书写在body中&lt;br /&gt;4.onmouseover 当鼠标悬于其上时&lt;br /&gt;5.onmouseout 当鼠标离开对象时&lt;br /&gt;6.onmouseup 当鼠标松开&lt;br /&gt;7.onmousedown 当鼠标按下键&lt;br /&gt;8.onFocus 当对象获取焦点时&lt;br /&gt;9.onSelect 当对象的文本被选中时&lt;br /&gt;10.onChange 当对象的内容被改变&lt;br /&gt;11.onBlur 当对象失去焦点&lt;br /&gt;onsubmit=return(ss())表单调用时返回的值&lt;/p&gt;&lt;p&gt;直线&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; border-bottom:1x solid black&lt;br /&gt;虚线&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; border-bottom:1x dotted black&lt;br /&gt;点划线&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; border-bottom:2x dashed black&lt;br /&gt;双线&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; border-bottom:5x double black&lt;br /&gt;槽状&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; border-bottom:1x groove black&lt;br /&gt;脊状&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; border-bottom:1x ridge black&lt;/p&gt;&lt;p&gt;&lt;br /&gt;1.边缘高光glow(color=颜色,strength=亮光大小)&amp;lt;br&amp;gt;&lt;br /&gt;2.水平翻转fliph() 使对象水平翻转180度&amp;lt;br&amp;gt;&lt;br /&gt;3.垂直翻转flipv() 使对象垂直翻转180度&amp;lt;br&amp;gt;&lt;br /&gt;4.对象模糊blur(add=true/false direction=方向 strength=强度)&lt;br /&gt;add指定是否按印象画派进行模糊direction模糊方向strength模糊强度&lt;br /&gt;5.对象透明alpha(opaction=0-100,finishopacity=0-100,style=0/1/2/3)&lt;br /&gt;opaction对象整体不透明值finishopacity当对象利用了渐透明时该项指定结束透明位置的不透明值style指定透明方式0为整体透明，1为线型透明，2为圆型透明，3为矩形透明&lt;br /&gt;6.去除颜色chroma(color=颜色值)使对象中颜色与指定颜色相同区域透明&lt;br /&gt;7.建立阴影dropshadow(color=阴影颜色,offx=水平向左偏离像素,offy=水平向下偏离像素)&lt;br /&gt;8.去色gray()使对象呈灰度显示&lt;br /&gt;9.负片效果invert()使对象呈底片效果&lt;br /&gt;10.高光light()使对象呈黑色显示&lt;br /&gt;11.遮盖mask(color=颜色)使整个对象以指定颜色进行蒙板一次&lt;/p&gt;&lt;p&gt;&lt;strong&gt;opacity 表透明度水平.0~100,0表全透明,100表完全不透明&lt;/strong&gt;&lt;br /&gt;finishopacity表想要设置的渐变透明效果.0~100.&lt;br /&gt;style 表透明区的形状.0表统一形状.1表线形.2表放射形.3表长方形.&lt;br /&gt;startx.starty表渐变透明效果的开始时X和Y坐标.&lt;br /&gt;finishx,finishy渐变透明效果结束时x,y 的坐标.&lt;br /&gt;add有来确定是否在模糊效果中使有原有目标.值为0,1.0表"否",1表"是".&lt;br /&gt;direction设置模糊的方向.0度表垂直向上,45度为一个单位.默认值是向左270度.left,right,down,up.&lt;br /&gt;strength 只能用整数来确定.代表有多少个像素的宽度将受到模糊影响.默认是5个.&lt;br /&gt;color要透明的颜色.&lt;br /&gt;offx,offy分别是x,y 方向阴影的偏移量.&lt;br /&gt;positive指投影方式.0表透明像素生成阴影.1表只给出不透明像素生成阴影..&lt;/p&gt;&lt;p&gt;AddAmbient:加入包围的光源.&lt;br /&gt;AddCone:加入锥形光源.&lt;br /&gt;AddPoint加入点光源&lt;br /&gt;Changcolor:改变光的颜色．&lt;br /&gt;Changstrength:改变光源的强度．&lt;br /&gt;Clear:清除所有的光源．&lt;br /&gt;MoveLight:移动光源．&lt;/p&gt;&lt;p&gt;freq是波纹的频率，在指定在对象上一区需要产生多少个完事的波纹．&lt;br /&gt;lightstrength可对于波纹增强光影的效果．显著0~100正整数，正弦波开始位置是0~360度．0表从0度开始，25表从90度开始．&lt;br /&gt;strength表振幅大小．&lt;/p&gt;&lt;p&gt;&lt;br /&gt;hand&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:hand"&lt;br /&gt;crosshair&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:crosshair"&lt;br /&gt;text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:text"&lt;br /&gt;wait&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:wait"&lt;br /&gt;default&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:default"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;help&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:help"&lt;br /&gt;e-resize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:e-resize"&lt;br /&gt;ne-resize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:ne-resize"&lt;br /&gt;n-resize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:n-resize"&lt;br /&gt;nw-resize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:nw-resize"&lt;br /&gt;w-resize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:w-resize"&lt;br /&gt;s-resize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:s-resize"&lt;br /&gt;sw-resize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:sw-resize "&lt;br /&gt;se-resize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:se-resize"&lt;br /&gt;auto&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style="cursor:auto"&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Dlonghow/aggbug/1770295.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Dlonghow/archive/2010/07/03/1770295.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
