<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_xiao_p</title><subtitle type="text">该过去的都会过去，该到来的总会到来……</subtitle><id>http://feed.cnblogs.com/blog/u/12367/rss</id><updated>2012-02-10T01:50:54Z</updated><author><name>xiao_p</name><uri>http://www.cnblogs.com/xiao_p/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiao_p/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/12367/rss"/><entry><id>http://www.cnblogs.com/xiao_p/archive/2012/01/20/2327843.html</id><title type="text">我是如何学习NodeJs的 – 笔记1</title><summary type="text">实际上在开始的时候我已经对NodeJS有了一定的了解。 比如我知道它是居于Javascript语言的服务器端web Server，比如我知道它的优势在于它的性能，而造成性能优异的原因在于高效的V8引擎，也就是编译器，以及其它一些语言层面的东东，无非就是JS一些语言的特点，函数，异步，回调之类的。 但是在具体学习的时候，我还是遇到了开始时候想象不到的很多困难，下面就是对学习过程的一个简单记录。 1. 当然是Google开始 第一条搜索记录显然就是www.NodeJS.org这个官方网站，很简洁的网站。 发现最中间好大的一个Download按钮，不管许多，下载之。发现是一个msi文件...</summary><published>2012-01-20T05:22:00Z</published><updated>2012-01-20T05:22:00Z</updated><author><name>xiao_p</name><uri>http://www.cnblogs.com/xiao_p/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiao_p/archive/2012/01/20/2327843.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiao_p/archive/2012/01/20/2327843.html"/><content type="html">&lt;div&gt;&#xD;
&lt;p&gt;&lt;font face="SimSun"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div&gt;&lt;p&gt;&lt;span style="font-family:SimSun;"&gt;实际上在开始的时候我已经对&lt;/span&gt;NodeJS&lt;span style="font-family: SimSun;"&gt;有了一定的了解。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;比如我知道它是居于&lt;/span&gt;Javascript&lt;span style="font-family: SimSun;"&gt;语言的服务器端&lt;/span&gt;web Server&lt;span style="font-family:SimSun;"&gt;，比如我知道它的优势在于它的性能，而造成性能优异的原因在于高效的&lt;/span&gt;V8&lt;span style="font-family:SimSun;"&gt;引擎，也就是编译器，以及其它一些语言层面的东东，无非就是&lt;/span&gt;JS&lt;span style="font-family:SimSun;"&gt;一些语言的特点，函数，异步，回调之类的。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;但是在具体学习的时候，我还是遇到了开始时候想象不到的很多困难，下面就是对学习过程的一个简单记录。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;1. &lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;当然是&lt;/span&gt;Google&lt;span style="font-family:SimSun;"&gt;开始&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:0in;"&gt;&lt;span style="font-family:SimSun;"&gt;第一条搜索记录显然就是&lt;/span&gt;www.NodeJS.org&lt;span style="font-family:SimSun;"&gt;这个官方网站，很简洁的网站。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:0in;"&gt;&lt;span style="font-family:SimSun;"&gt;发现最中间好大的一个&lt;/span&gt;Download&lt;span style="font-family:SimSun;"&gt;按钮，不管许多，下载之。发现是一个&lt;/span&gt;msi&lt;span style="font-family:SimSun;"&gt;文件，那还考虑什么，安装吧。（&lt;/span&gt;Windows OS&lt;span style="font-family:SimSun;"&gt;）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:0in;"&gt;&lt;span style="font-family:SimSun;"&gt;安装的过程很简单。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:0in;"&gt;&lt;span style="font-family:SimSun;"&gt;后来才发现，在&lt;/span&gt;Linux&lt;span style="font-family:SimSun;"&gt;下和&lt;/span&gt;Mac&lt;span style="font-family:SimSun;"&gt;下都要比&lt;/span&gt;Windows&lt;span style="font-family:SimSun;"&gt;下折腾麻烦一些，&lt;/span&gt;Windows&lt;span style="font-family:SimSun;"&gt;下的青年们果然都是小白。（目前还只是在&lt;/span&gt;windows&lt;span style="font-family:SimSun;"&gt;下折腾）&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;2. &lt;/p&gt;  &lt;p&gt;OK&lt;span style="font-family:SimSun;"&gt;，开始程序员的永远的第一步&amp;#8220;&lt;/span&gt;Hello World&lt;span style="font-family: SimSun;"&gt;&amp;#8221;。&lt;/span&gt;&lt;/p&gt;  &lt;div style="border:solid #D9D9D9 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt"&gt;  &lt;p style="border:none;padding:0in;"&gt;var http = require("http");&lt;/p&gt;  &lt;p style="border:none;padding:0in;"&gt;http.createServer(function(request, response) {&lt;/p&gt;  &lt;p style="border:none;padding:0in;"&gt;response.writeHead(200, {"Content-Type": "text/plain"});&lt;/p&gt;  &lt;p style="border:none;padding:0in;"&gt;response.write("Hello World");&lt;/p&gt;  &lt;p style="border:none;padding:0in;"&gt;response.end();&lt;/p&gt;  &lt;p style="border:none;padding:0in;"&gt;}).listen(8080);&lt;/p&gt;  &lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;这样就完事了，将这几句话&lt;/span&gt;copy&lt;span style="font-family:SimSun;"&gt;近一个&lt;/span&gt;server.js&lt;span style="font-family:SimSun;"&gt;的文件中，然后你需要打开命令行（强烈推荐使用&lt;/span&gt;PowerShell&lt;span style="font-family:SimSun;"&gt;，我现在都没有搞明白用&lt;/span&gt;CMD&lt;span style="font-family:SimSun;"&gt;的话除了关掉窗口怎么停止或者&lt;/span&gt;Restart&lt;span style="font-family:SimSun;"&gt;），运行&lt;/span&gt;&lt;/p&gt;  &lt;div style="border:solid #D9D9D9 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt"&gt;  &lt;p style="border:none;padding:0in;"&gt;node server.js&lt;/p&gt;  &lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;接下来，打开浏览器访问&lt;/span&gt;&lt;a href="http://localhost:8080/"&gt;http://localhost:8080/&lt;/a&gt;&lt;span style="font-family:SimSun;"&gt;，你会看到一个写着&lt;/span&gt;&amp;#8220;Hello World&amp;#8221;&lt;span style="font-family:SimSun;"&gt;的网页。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;这几句话应该都能看明白，不解释了。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;3. &lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;接下来自然而然的就想如何弄&lt;/span&gt;Web Socket&lt;span style="font-family: SimSun;"&gt;的&lt;/span&gt;Server&lt;span style="font-family:SimSun;"&gt;了，于是继续&lt;/span&gt;Google&lt;span style="font-family:SimSun;"&gt;之，发现需要安装&lt;/span&gt;NodeJS&lt;span style="font-family:SimSun;"&gt;的模块&lt;/span&gt;socket.io&lt;span style="font-family:SimSun;"&gt;（这东西个人的理解就是类似于&lt;/span&gt;Java&lt;span style="font-family:SimSun;"&gt;中的第三方库的意思）&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;安装模块的方式一般是通过&lt;/span&gt;NPM&lt;span style="font-family:SimSun;"&gt;，对于&lt;/span&gt;NPM&lt;span style="font-family:SimSun;"&gt;完全没有概念，于是继续&lt;/span&gt;Google&lt;span style="font-family:SimSun;"&gt;之。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;找到一篇文章介绍&lt;/span&gt;NPM&lt;span style="font-family:SimSun;"&gt;的&lt;/span&gt;&lt;a href="http://howtonode.org/introduction-to-npm"&gt;http://howtonode.org/introduction-to-npm&lt;/a&gt;&lt;span style="font-family:SimSun;"&gt;，看了下，大概有了一些了解。（文章不错，推荐下）&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;NPM&lt;span style="font-family:SimSun;"&gt;就是&lt;/span&gt;NodeJS Package Management&lt;span style="font-family:SimSun;"&gt;的缩写。目前的&lt;/span&gt;NodeJS&lt;span style="font-family:SimSun;"&gt;已经自带&lt;/span&gt;NPM&lt;span style="font-family:SimSun;"&gt;了。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;这里简单介绍几个&lt;/span&gt;npm &lt;span style="font-family:SimSun;"&gt;命令，&lt;/span&gt;&lt;/p&gt;  &lt;div style="border:solid #D9D9D9 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt"&gt;  &lt;p style="border:none;padding:0in;"&gt;npm list &amp;#8211; &lt;span style="font-family:SimSun;"&gt;查看当前安装的模块&lt;/span&gt;&lt;/p&gt;  &lt;p style="border:none;padding:0in;"&gt;npm version &amp;#8211; &lt;span style="font-family:SimSun;"&gt;查看当前&lt;/span&gt;npm&lt;span style="font-family:SimSun;"&gt;的版本&lt;/span&gt;&lt;/p&gt;  &lt;p style="border:none;padding:0in;"&gt;npm install &amp;#8211; &lt;span style="font-family:SimSun;"&gt;安装新模块&lt;/span&gt;&lt;/p&gt;  &lt;p style="border:none;padding:0in;"&gt;npm update &amp;#8211; &lt;span style="font-family:SimSun;"&gt;更新模块&lt;/span&gt;&lt;/p&gt;  &lt;p style="border:none;padding:0in;"&gt;npm help &amp;#8211; &lt;span style="font-family:SimSun;"&gt;帮助（这个最重要）&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;其它命令可以去帮助文件中查询，或者敲击最上面的&lt;/span&gt;npm help&lt;span style="font-family:SimSun;"&gt;命令&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;安装的命令很简单，你可以运行&lt;/span&gt; npm help install&lt;span style="font-family:SimSun;"&gt;获取更多帮助（发现&lt;/span&gt;npm&lt;span style="font-family:SimSun;"&gt;的帮助文件做的相当的不错，例如运行上面的命令会自动打开一个&lt;/span&gt;htm&lt;span style="font-family:SimSun;"&gt;帮助文件）&lt;/span&gt;&lt;/p&gt;  &lt;div style="border:solid #D9D9D9 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt"&gt;  &lt;p style="border:none;padding:0in;"&gt;npm Install socket.io&lt;/p&gt;  &lt;p style="border:none;padding:0in;"&gt;npm install express&lt;/p&gt;  &lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;有些文章会提示这个命令可以加上&lt;/span&gt;-g&lt;span style="font-family:SimSun;"&gt;或者&lt;/span&gt;-d&lt;span style="font-family: SimSun;"&gt;（如果不试用&lt;/span&gt;-g&lt;span style="font-family:SimSun;"&gt;的话，会发现&lt;/span&gt;express&lt;span style="font-family:SimSun;"&gt;命令不好用，原因暂不清楚），例如&lt;/span&gt;&lt;/p&gt;  &lt;div style="border:solid #D9D9D9 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt"&gt;  &lt;p style="border:none;padding:0in;"&gt;npm install &amp;#8211;g socket.io&lt;/p&gt;  &lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;搜索了下&lt;/span&gt;-g&lt;span style="font-family:SimSun;"&gt;，&lt;/span&gt;-d&lt;span style="font-family: SimSun;"&gt;是什么意思，在&lt;/span&gt;config&lt;span style="font-family:SimSun;"&gt;的帮助文件中找到了答案&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;按照帮助文件的说法，&lt;/span&gt;-g&lt;span style="font-family:SimSun;"&gt;，&lt;/span&gt;-d&lt;span style="font-family: SimSun;"&gt;其实就是&lt;/span&gt;Shorthand&lt;span style="font-family:SimSun;"&gt;（缩记），说白了就是缩记符，他们分别代表的是&lt;/span&gt;&lt;/p&gt;  &lt;div style="border:solid #D9D9D9 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt"&gt;  &lt;p style="border:none;padding:0in;"&gt;g &amp;#8211; global&lt;/p&gt;  &lt;p style="border:none;padding:0in;"&gt;d &amp;#8211; log lever info&lt;/p&gt;  &lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;还有其它的一些缩记符，你可以在帮助文件中找到他们&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;上面的缩记符的影响如下：&lt;/span&gt;&lt;/p&gt;  &lt;div style="border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt"&gt;  &lt;p style="border:none; padding:0in;"&gt;&lt;span style="font-family:SimSun;"&gt;如果你添加了&lt;/span&gt;-g&lt;span style="font-family:SimSun;"&gt;的话，则会将&lt;/span&gt;NodeJS&lt;span style="font-family:SimSun;"&gt;模块安装到&lt;/span&gt;C:\Users\User Name\AppData\Roaming\npm\node_modules&lt;span style="font-family:SimSun;"&gt;这个路径下，如果没有添加的话，则会安装到你的&lt;/span&gt;NodeJS&lt;span style="font-family:SimSun;"&gt;的安装路径的&lt;/span&gt;node_modules&lt;span style="font-family:SimSun;"&gt;路径下&lt;/span&gt;&lt;/p&gt;  &lt;p style="border:none; padding:0in;"&gt;&lt;span style="font-family:SimSun;"&gt;注意：这里有个很重要的区别，如果是选择&lt;/span&gt;-g&lt;span style="font-family:SimSun;"&gt;也就是全局安装的话，你可以直接在命令行中使用&lt;/span&gt;express&lt;span style="font-family:SimSun;"&gt;，&lt;/span&gt;jade&lt;span style="font-family:SimSun;"&gt;等命令，原因在于安装&lt;/span&gt;NodeJS&lt;span style="font-family:SimSun;"&gt;的时候，会自动将&lt;/span&gt;C:\Users\User Name\AppData\Roaming\npm\node_modules&lt;span style="font-family:SimSun;"&gt;这个路径添加到系统的环境变量中。&lt;/span&gt;&lt;/p&gt;  &lt;p style="border:none; padding:0in;"&gt;&lt;span style="font-family:SimSun;"&gt;如果不添加&lt;/span&gt;-g&lt;span style="font-family:SimSun;"&gt;的话，如果要使用&lt;/span&gt;express&lt;span style="font-family:SimSun;"&gt;，&lt;/span&gt;jade&lt;span style="font-family:SimSun;"&gt;等命令，则需要在&lt;/span&gt;NodeJS&lt;span style="font-family:SimSun;"&gt;的&lt;/span&gt;node_modules&lt;span style="font-family:SimSun;"&gt;目录中寻找到&lt;/span&gt;express&lt;span style="font-family:SimSun;"&gt;命令所在的&lt;/span&gt;.bin&lt;span style="font-family:SimSun;"&gt;目录，才可以正常使用。&lt;/span&gt;&lt;/p&gt;  &lt;p style="border:none; padding:0in;"&gt;&lt;span style="font-family:SimSun;"&gt;如果添加了&lt;/span&gt;-d&lt;span style="font-family:SimSun;"&gt;的话，则会显示所有的安装日志信息&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;p align="right" style="margin-right:11.0pt;text-align:right"&gt;&lt;/p&gt;  &lt;p&gt;4.&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;于是开始安装模块，看起来很简单，但是这个时候问题出现了，我怎么都连接不上服务器&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;总是提示这个错误&lt;/span&gt;&lt;/p&gt;  &lt;div style="border:solid #D9D9D9 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt"&gt;  &lt;p style="border:none;padding:0in;"&gt;npm http GET https://registry.npmjs.org/express&lt;/p&gt;  &lt;p style="border:none;padding:0in;"&gt;Error: failed to fetch from registry&lt;/p&gt;  &lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;看了下这个命令和执行过程，怀疑是下载一些包和文件之类的东东回来。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;由于我是在单位折腾的，所以怀疑是网络环境的问题，因为没有办法通过服务器的审查，所以不允许下载。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:.75in; text-indent:-.5in;"&gt;（1）&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:SimSun;"&gt;最开始想到的办法是将&lt;/span&gt;https&lt;span style="font-family:SimSun;"&gt;改为&lt;/span&gt;http&lt;span style="font-family:SimSun;"&gt;，不使用&lt;/span&gt;ssl&lt;span style="font-family:SimSun;"&gt;这样的&lt;/span&gt;https&lt;span style="font-family:SimSun;"&gt;传输协议，于是找到了修改配置的命令&lt;/span&gt;&lt;/p&gt;  &lt;div style="border:solid #D9D9D9 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt; margin-left:.75in;margin-right:0in"&gt;  &lt;p style="margin-left:0in; border:none;padding:0in;"&gt;npm config set registry http://registry.npmjs.org/express&lt;/p&gt;  &lt;p style="margin-left:0in; border:none;padding:0in;"&gt;npm config set strict-ssl false&lt;/p&gt;  &lt;/div&gt;  &lt;p style="margin-left:.75in;"&gt;&lt;span style="font-family:SimSun;"&gt;更改之后，发现无效&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:.75in;text-indent:-.5in;"&gt;（2）&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:SimSun;"&gt;因为其实就是下载文件，所有有的网站提到了可以将默认的&lt;/span&gt;http://registry.npmjs.org/express&lt;span style="font-family:SimSun;"&gt;更改为其它网站，并给了几个网址，可以通过上面的更改配置的方式更改，还是无效&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:.75in;text-indent:-.5in;"&gt;（3）&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:SimSun;"&gt;最后无奈换了个网络环境之后，发现可以安装了，感觉应该是下载了安装包，不会有其它变化（比如写入注册表之类的），所以将整个目录&lt;/span&gt;copy&lt;span style="font-family:SimSun;"&gt;了过来，并且进行了验证，发现是好用的，你可以通过如下语句验证&lt;/span&gt;&lt;/p&gt;  &lt;div style="border:solid #D9D9D9 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt; margin-left:.75in;margin-right:0in"&gt;  &lt;p style="margin-left:0in; border:none;padding:0in;"&gt;npm list&lt;/p&gt;  &lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;于是，环境终于算是搭建完成了，可以开始下面的工作了&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;"&gt;几个注意事项及总结&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;/div&gt;&lt;blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"&gt;&lt;div&gt;&lt;div&gt;&lt;p style="text-indent:-.25in;"&gt;1.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NodeJS&lt;span style="font-family:SimSun;"&gt;的模块路径是&lt;/span&gt;nodejs&lt;span style="font-family:SimSun;"&gt;的安装目录下面的&lt;/span&gt;node_modules&lt;span style="font-family:SimSun;"&gt;子目录，例如我的是&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div style="border:solid #D9D9D9 1.0pt;padding:1.0pt 4.0pt 1.0pt 5.0pt"&gt;&lt;p style="border:none;padding:0in;"&gt;C:\Program Files\nodejs\node_modules&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;p style="text-indent:-.25in;"&gt;2.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:SimSun;"&gt;很多命令都需要&lt;/span&gt;node&lt;span style="font-family:SimSun;"&gt;执行，比如&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div style="border:solid #D9D9D9 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt; margin-left:.5in;margin-right:0in"&gt;&lt;p style="margin-left:0in; border:none;padding:0in;"&gt;node &amp;#8211;v&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div style="border:solid #D9D9D9 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt; margin-left:.5in;margin-right:0in"&gt;&lt;p style="margin-left:0in; border:none;padding:0in;"&gt;node &amp;#8211;help&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;p&gt;node&lt;span style="font-family:SimSun;"&gt;是一个命令行的执行程序，在&lt;/span&gt;NodeJS&lt;span style="font-family:SimSun;"&gt;的根目录中能够找到&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;p style="text-indent:-.25in;"&gt;3.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:SimSun;"&gt;很多命令都需要&lt;/span&gt;npm&lt;span style="font-family:SimSun;"&gt;的执行，你可以在&lt;/span&gt;NodeJS&lt;span style="font-family:SimSun;"&gt;的根目录中找到&lt;/span&gt;npm.cmd&lt;span style="font-family:SimSun;"&gt;这个文件&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;p style="text-indent:-.25in;"&gt;4.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:SimSun;"&gt;帮助文档很重要，有很多时候比&lt;/span&gt;Google&lt;span style="font-family:SimSun;"&gt;定位问题要准确的多&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;p style="text-indent:-.25in;"&gt;5.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:SimSun;"&gt;有准备的去找答案和瞎碰完全就是两个概念&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;p style="text-indent:-.25in;"&gt;6.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:SimSun;"&gt;多折腾总归是有好处的，千万不要怕折腾&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;                  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin-left:0in;"&gt;Reference&lt;span style="font-family:SimSun;"&gt;：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:0in;"&gt;&lt;a href="http://twaver.servasoft.com/?p=3426"&gt;http://twaver.servasoft.com/?p=3426&lt;/a&gt;&lt;/p&gt;  &lt;p style="margin-left:0in;"&gt;&lt;a href="http://cnodejs.org/"&gt;http://cnodejs.org&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p style="margin-left:0in;"&gt;&lt;a href="http://cnodejs.org/"&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/xiao_p/aggbug/2327843.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiao_p/archive/2012/01/20/2327843.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xiao_p/archive/2010/07/11/1775168.html</id><title type="text">关于WPF的拖拽（1让我们拖拽吧！）</title><summary type="text">拖拽那点事</summary><published>2010-07-11T04:52:00Z</published><updated>2010-07-11T04:52:00Z</updated><author><name>xiao_p</name><uri>http://www.cnblogs.com/xiao_p/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiao_p/archive/2010/07/11/1775168.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiao_p/archive/2010/07/11/1775168.html"/><content type="html">&lt;p&gt;主题：&lt;/p&gt;&#xD;
&lt;p&gt;1.让我们拖拽吧！&lt;/p&gt;&#xD;
&lt;p&gt;2.什么，拖拽时还要缩略图？。。。&lt;/p&gt;&#xD;
&lt;p&gt;3.拖拽时的部件重叠（一个萝卜一个坑，请不要占我的坑）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;引子：&lt;/p&gt;&#xD;
&lt;p&gt;BOSS：为啥你的程序不支持拖拽？&lt;/p&gt;&#xD;
&lt;p&gt;我：因为我不会拖拽。。。&lt;/p&gt;&#xD;
&lt;p&gt;BOSS：我每月给你的￥都TMD喂狗了啊。。。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;上帝说：我要光，所以有了光。&lt;/p&gt;&#xD;
&lt;p&gt;BOSS说：我要拖拽，于是有了拖拽！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;正文：&lt;/p&gt;&#xD;
&lt;p&gt;1.让我们拖拽吧！&lt;/p&gt;&#xD;
&lt;p&gt;话说，WPF，要实现拖拽还是比较简单的。&lt;/p&gt;&#xD;
&lt;p&gt;首先是素材，你得有个拖拽的容器，还要有一些拖拽的部件。&lt;/p&gt;&#xD;
&lt;p&gt;然后无非就是以下几个步骤。&lt;/p&gt;&#xD;
&lt;p&gt;对于想要拖拽的部件&lt;/p&gt;&#xD;
&lt;p&gt;（1）你先得给他弄上&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" &gt;&lt;span style="line-height: 20px; font-family: 'Segoe UI', Arial, sans-serif; color: rgb(68,68,68); font-size: 13px" &gt;&lt;strong&gt;MouseMove&lt;/strong&gt;&lt;span &gt;&amp;nbsp;&lt;/span&gt;and&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;MouseLeftButtonDown&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;事件&lt;/p&gt;&#xD;
&lt;p&gt;（2）你还得弄个DataObject包含你拖拽时的数据和你想要的效果&lt;/p&gt;&#xD;
&lt;p&gt;（3）然后调用&lt;span style="color: #333399"&gt;DragDrop.&lt;/span&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" &gt;&lt;span style="line-height: 20px; font-family: 'Segoe UI', Arial, sans-serif; color: rgb(68,68,68); font-size: 13px" &gt;&lt;strong&gt;DoDragDrop()&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;吧&lt;/p&gt;&#xD;
&lt;p&gt;对于容器&lt;/p&gt;&#xD;
&lt;p&gt;（1）你要把它的&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" &gt;&lt;span style="line-height: 20px; font-family: 'Segoe UI', Arial, sans-serif; color: rgb(68,68,68); font-size: 13px" &gt;&lt;strong&gt;AllowDrop&lt;/strong&gt;&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;设置为&lt;span style="color: #333399"&gt;true，&lt;/span&gt;&lt;span&gt;这样你的容器才能被人随便的丢垃圾进去&lt;/span&gt;&lt;span&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;（2）当然，你还得加上&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" &gt;&lt;span style="line-height: 20px; font-family: 'Segoe UI', Arial, sans-serif; color: rgb(68,68,68); font-size: 13px" &gt;&lt;strong&gt;DragEnter&lt;/strong&gt;&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;事件，拖动进入了你的容器时会发生这个事件。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;（3）最后，不要忘记加上&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" &gt;&lt;span style="line-height: 20px; font-family: 'Segoe UI', Arial, sans-serif; color: rgb(68,68,68); font-size: 13px" &gt;&lt;strong&gt;DragDrop&lt;/strong&gt;&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;事件，它会告诉你有某个部件被扔下来了。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;好了，说了这么多，还是弄点代码上来吧。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;我们自定义一些UserControl代表部件，容器就使用Canvas，因为Canvas能够很好的定位内部的部件位置。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;下面是代码&lt;/p&gt;&#xD;
&lt;p&gt;Container的XMAL&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('532c910d-a653-4bae-8c5d-e5d24c84ccda')"&gt;&lt;img style="display: none" id="code_img_opened_532c910d-a653-4bae-8c5d-e5d24c84ccda"  onclick="cnblogs_code_hide('532c910d-a653-4bae-8c5d-e5d24c84ccda',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div id="cnblogs_code_open_532c910d-a653-4bae-8c5d-e5d24c84ccda" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Canvas&amp;nbsp;Background&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Silver&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;x:Name&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;container&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;component:Component&amp;nbsp;x:Name&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;component1&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Canvas.Top&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;30&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Canvas.Left&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;30&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;PreviewMouseLeftButtonDown&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;component1_PreviewMouseLeftButtonDown&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;PreviewMouseMove&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;component1_PreviewMouseMove&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;component:Component&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;Canvas&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Component的XMAL&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('d5274f90-3837-458e-9368-4bba55e86218')"&gt;&lt;img style="display: none" id="code_img_opened_d5274f90-3837-458e-9368-4bba55e86218"  onclick="cnblogs_code_hide('d5274f90-3837-458e-9368-4bba55e86218',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div id="cnblogs_code_open_d5274f90-3837-458e-9368-4bba55e86218" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Border&amp;nbsp;Background&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Azure&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;BorderThickness&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;10&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CornerRadius&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;5&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;BorderBrush&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;#FF8C4242&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;DockPanel&amp;nbsp;Margin&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;10&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;TextBlock&amp;nbsp;FontSize&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;20&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;FontWeight&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Bold&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;FontStyle&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Normal&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&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;I&amp;nbsp;am&amp;nbsp;a&amp;nbsp;container&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;TextBlock&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;DockPanel&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;Border&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;主窗体CS文件&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('3b4ca447-49aa-4640-aa7b-e706c24d48d1')"&gt;&lt;img style="display: none" id="code_img_opened_3b4ca447-49aa-4640-aa7b-e706c24d48d1"  onclick="cnblogs_code_hide('3b4ca447-49aa-4640-aa7b-e706c24d48d1',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div id="cnblogs_code_open_3b4ca447-49aa-4640-aa7b-e706c24d48d1" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.container.AllowDrop&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.container.DragEnter&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DragEventHandler((sender,&amp;nbsp;e)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;e.Effects&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DragDropEffects.None;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.container.Drop&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DragEventHandler((sender,&amp;nbsp;e)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;get&amp;nbsp;the&amp;nbsp;object&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&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;var&amp;nbsp;component&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;e.Data.GetData(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000"&gt;(Component))&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;as&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Component;&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;var&amp;nbsp;endPoint&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;e.GetPosition(container);&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;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;calculate&amp;nbsp;the&amp;nbsp;length&amp;nbsp;of&amp;nbsp;component&amp;nbsp;moved&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&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;var&amp;nbsp;moveX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;endPoint.X&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;startPoint.X;&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;var&amp;nbsp;moveY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;endPoint.Y&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;startPoint.Y;&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;var&amp;nbsp;x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Canvas.GetLeft(component)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;moveX;&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;var&amp;nbsp;y&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Canvas.GetTop(component)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;moveY;&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;Canvas.SetLeft(component,&amp;nbsp;x);&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;Canvas.SetTop(component,&amp;nbsp;y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&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;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Point&amp;nbsp;startPoint;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;component1_PreviewMouseMove(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sender,&amp;nbsp;MouseEventArgs&amp;nbsp;e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;Get&amp;nbsp;the&amp;nbsp;current&amp;nbsp;mouse&amp;nbsp;position&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&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;Point&amp;nbsp;mousePos&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;e.GetPosition(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&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;Vector&amp;nbsp;diff&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;startPoint&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;mousePos;&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;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(e.LeftButton&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;MouseButtonState.Pressed&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&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;Math.Abs(diff.X)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SystemParameters.MinimumHorizontalDragDistance&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&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;Math.Abs(diff.Y)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SystemParameters.MinimumVerticalDragDistance)&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;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&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;Initialize&amp;nbsp;the&amp;nbsp;drag&amp;nbsp;&amp;amp;&amp;nbsp;drop&amp;nbsp;operation&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&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;var&amp;nbsp;component&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sender&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;as&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Component;&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;DataObject&amp;nbsp;obj&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DataObject(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000"&gt;(Component),&amp;nbsp;component);&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;DragDrop.DoDragDrop(component,&amp;nbsp;obj,&amp;nbsp;DragDropEffects.All);&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;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;component1_PreviewMouseLeftButtonDown(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sender,&amp;nbsp;MouseButtonEventArgs&amp;nbsp;e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;startPoint&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;e.GetPosition(container);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;搞定！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/xiao_p/2.PNG" width="800" height="600" /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/xiao_p/1.PNG" width="800" height="600" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;总结：至于什么ListView，TreeView的拖拽也都大同小异，无非就是拖拽的部件和容器变化。&lt;/p&gt;&#xD;
&lt;p&gt;可以参考这个文章&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.codeproject.com/KB/WPF/WpfDragAndDropSmorgasbord.aspx" target="_blank"&gt;http://www.codeproject.com/KB/WPF/WpfDragAndDropSmorgasbord.aspx&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xiao_p/aggbug/1775168.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiao_p/archive/2010/07/11/1775168.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xiao_p/archive/2010/03/22/FSharp001.html</id><title type="text">F# Fundamentals</title><summary type="text">F# Fundamentals</summary><published>2010-03-22T03:53:00Z</published><updated>2010-03-22T03:53:00Z</updated><author><name>xiao_p</name><uri>http://www.cnblogs.com/xiao_p/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiao_p/archive/2010/03/22/FSharp001.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiao_p/archive/2010/03/22/FSharp001.html"/><content type="html">&lt;p&gt;&lt;span style="background-color: yellow; "&gt;F# Fundamentals &amp;nbsp; 基本语法&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;先是一些简单示例&lt;/p&gt;&#xD;
&lt;p&gt;1.Hello World&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;Printfn&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Hello&amp;nbsp;World&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2.简单的Windows Form程序&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;open&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Windows.Form&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;let&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;form&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Form&amp;nbsp;(Visible=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;form.Click.Add&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;fun&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;printfn&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;click&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Application.Run&amp;nbsp;form&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.斐波那契数列&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;let&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;rec&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;fib&amp;nbsp;x&amp;nbsp;=&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;x&amp;nbsp;&amp;lt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;then&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;fib&amp;nbsp;(x&amp;#8211;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;+&amp;nbsp;fib&amp;nbsp;(x-&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;let&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;results&amp;nbsp;=&amp;nbsp;Array.map&amp;nbsp;fib&amp;nbsp;[&lt;/span&gt;&lt;span style="color: #000000"&gt;|&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;..&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;40&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;|&lt;/span&gt;&lt;span style="color: #000000"&gt;]&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;printfn&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;results&amp;nbsp;=&amp;nbsp;%A&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;results&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;感觉怎么样，嘿嘿，OCAML的语法，刚开始看起来肯定是挺晕的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="background-color: yellow"&gt;let关键字&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;let关键字用来绑定（binding）&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;let&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;data&amp;nbsp;=&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&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&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: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;let&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;f&amp;nbsp;(a,&amp;nbsp;b,&amp;nbsp;c)&amp;nbsp;=&amp;nbsp;&amp;nbsp;&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: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;let&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sum&amp;nbsp;=&amp;nbsp;a&amp;nbsp;+&amp;nbsp;b&amp;nbsp;+&amp;nbsp;c&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: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;let&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;g&amp;nbsp;x&amp;nbsp;=&amp;nbsp;sum&amp;nbsp;+&amp;nbsp;x*x&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: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(g&amp;nbsp;a,&amp;nbsp;g&amp;nbsp;b,&amp;nbsp;g&amp;nbsp;c)&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;不解释，很简单，类似于JavaScript中的var。&lt;/p&gt;&#xD;
&lt;fieldset&gt;&lt;legend&gt;NOte&lt;/legend&gt;注意，F#用缩进表示Scope，开始不是很习惯，习惯了就好。&lt;/fieldset&gt; &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="background-color: yellow"&gt;F#中的注释&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;comment&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(*&amp;nbsp;comment&amp;nbsp;*) --- 这种注释方式在别的语言中还真没见过，孤陋寡闻了。。。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: yellow; "&gt;F#中的函数&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;fun&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;x&amp;nbsp;+&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000; "&gt;) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ---匿名函数&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;let&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;f&amp;nbsp;x&amp;nbsp;=&amp;nbsp;x&amp;nbsp;+&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;(f,&amp;nbsp;f)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;val&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;f&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;span  style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; "&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="background-color: yellow"&gt;F#中的操作符&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;由于F#允许操作符重载，而且支持的操作符也较多，所以显得有些混乱，如果想了解具体的重载规则，请参考老赵的这篇文章&lt;a href="http://www.cnblogs.com/JeffreyZhao/archive/2009/12/14/fsharp-operator.html" target="_blank"&gt;http://www.cnblogs.com/JeffreyZhao/archive/2009/12/14/fsharp-operator.html&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;算术运算符&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;Overloaded&amp;nbsp;Arithmetic&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Addition&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Subtraction&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Multiplication&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Division&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;%&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Remainder&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;modulus&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;x&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Unary&amp;nbsp;negation&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;逻辑运算符&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;not&amp;nbsp;expr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Boolean&amp;nbsp;negation&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;expr&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;expr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Boolean&amp;nbsp;&amp;#8220;and&amp;#8221;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;expr&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;||&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;expr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Boolean&amp;nbsp;&amp;#8220;or&amp;#8221;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="background-color: yellow"&gt;F#的基础类型&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;F#的类型推断系统是很牛X的，具体怎么牛，大家自己慢慢研究吧。。。&lt;/p&gt;&#xD;
&lt;p&gt;下面是F#的基本类型&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;Basic&amp;nbsp;Types&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;Literals&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;76&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;abc&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;@"&lt;/span&gt;&lt;span style="color: #800000"&gt;c:\etc&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;float&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;3.14&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;3.2e5&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;char&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;7&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;()&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;因为也是基于CLR的，所以基本类型都差不多。&lt;/p&gt;&#xD;
&lt;p&gt;但是F#为了科学计算，所以又增加了一些类型支持。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000;"&gt;Basic&amp;nbsp;Types&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;and&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Literals&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sbyte&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.SByte&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;76y&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;byte&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.Byte&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;76uy&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;int16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.Int16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;76s&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;uint16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.UInt16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;76us&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;int32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.Int32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;76&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;uint32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.UInt32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;76u&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;int64&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.Int64&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;76L&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;uint64&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.UInt64&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;76UL&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.String&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;abc&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;c:\etc&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;single&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.Single&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;3.14f&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;double&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.Double&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;3.14&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;3.2e5&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.Char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;7&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nativeint&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.IntPtr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;76n&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;unativeint&amp;nbsp;=&amp;nbsp;System.UIntPtr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;76un&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.Boolean&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;unit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;FSharp.Core.Unit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;obj&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.Object&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;box&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;exn&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;System.Exception&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ArgumentException()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;bigint&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;FSharp.Math.BigInt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1024I&amp;nbsp;*&amp;nbsp;1024I&amp;nbsp;*&amp;nbsp;1024I&amp;nbsp;*&amp;nbsp;1024I&lt;span  style="font-family: verdana, 'courier new'; font-size: 14px; "&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="background-color: yellow"&gt;F#的管道符&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这东西早就有一大堆东西支持了，比如powershell，linux shell等&lt;/p&gt;&#xD;
&lt;p&gt;无非就是前个函数的输出作为下一个函数的输入罢了&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;|&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;f&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;x&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;|&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;f1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;|&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;f2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;|&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;f3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;看一个具体的应用&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('8c6f9326-5f4a-4fa8-8df0-f2934d41ede6')"&gt;&lt;div id="cnblogs_code_open_8c6f9326-5f4a-4fa8-8df0-f2934d41ede6"&gt;&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000FF;"&gt;open&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;System.IO&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;let&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;files&amp;nbsp;=&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Directory.GetFiles(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;c:\&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;*.*&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&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;SearchOption.AllDirectories)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;let&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;totalSize&amp;nbsp;=&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;files&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&amp;nbsp;Array.map&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;fun&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;file&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;FileInfo&amp;nbsp;file)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&amp;nbsp;Array.map&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;fun&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;info&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;info.Length)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&amp;nbsp;Array.sum&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xiao_p/aggbug/1689080.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiao_p/archive/2010/03/22/FSharp001.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xiao_p/archive/2010/01/25/1655736.html</id><title type="text">关于程序员的那些事---一个五年程序员的总结</title><summary type="text">程序员的那点事...</summary><published>2010-01-25T03:49:00Z</published><updated>2010-01-25T03:49:00Z</updated><author><name>xiao_p</name><uri>http://www.cnblogs.com/xiao_p/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiao_p/archive/2010/01/25/1655736.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiao_p/archive/2010/01/25/1655736.html"/></entry><entry><id>http://www.cnblogs.com/xiao_p/archive/2009/12/15/1624637.html</id><title type="text">关于计划</title><summary type="text">去年也是在这个时候给自己列了一份计划清单，大概如下，1.完整的读一本技术书籍2.完整的读一本英文书籍3.参加一个完整的项目（从需求分析到发布结束）4.出去旅行一次5.适当的锻炼身体6.学习一门函数式语言(F#,Erlang,Lisp/Schema)7.更新五篇以上的技术博客8.参加一个英语学习班9.爬一座山现在到了年底了，我发现这份清单有一些完成了，有一些没有完成。列这份清单的意义在于有很多的事情...</summary><published>2009-12-15T04:02:00Z</published><updated>2009-12-15T04:02:00Z</updated><author><name>xiao_p</name><uri>http://www.cnblogs.com/xiao_p/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiao_p/archive/2009/12/15/1624637.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiao_p/archive/2009/12/15/1624637.html"/></entry><entry><id>http://www.cnblogs.com/xiao_p/archive/2009/09/01/1558306.html</id><title type="text">巧用异步委托解决异步并发问题</title><summary type="text">客户需求如下： 要求系统能够同时导入A、B、C、D四个文件。 如果某个文件导入的时候出错，显示错误信息，其它文件能够继续导入。 全部导入之后，通知主线程，程序结束。 最终决定采用异步委托解决这个问题。首先编写一个委托，通过需求可以知道，委托的方法名如下：/// /// Import Data Delegate/// /// 导入文件路径public delegate void ImportData...</summary><published>2009-09-01T12:35:00Z</published><updated>2009-09-01T12:35:00Z</updated><author><name>xiao_p</name><uri>http://www.cnblogs.com/xiao_p/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiao_p/archive/2009/09/01/1558306.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiao_p/archive/2009/09/01/1558306.html"/></entry><entry><id>http://www.cnblogs.com/xiao_p/archive/2009/08/31/1557497.html</id><title type="text">应用HttpHandler， Json， JQuery， ASP.Net UserControl等技术处理 Ajax 的解决方案</title><summary type="text">HttpHandler， Json， JQuery， ASP.Net UserControl各部分相应的作用如下， HttpHandler：相应客户请求，并通过调用service返回相应数据。 Json：用来传输简单数据的数据格式。 JQuery：通过JQuery的API调用Ajax，修改页面数据、样式等。 UserControl：生成复杂的html数据，并回传给客户端。 一、页面请求部分页面请求...</summary><published>2009-08-31T10:09:00Z</published><updated>2009-08-31T10:09:00Z</updated><author><name>xiao_p</name><uri>http://www.cnblogs.com/xiao_p/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiao_p/archive/2009/08/31/1557497.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiao_p/archive/2009/08/31/1557497.html"/></entry><entry><id>http://www.cnblogs.com/xiao_p/archive/2008/10/09/1307195.html</id><title type="text">关于90后程序员工作经历的一些看法</title><summary type="text">关于90后程序员工作经历的一些看法，没有忠告，只有一些小的建议。</summary><published>2008-10-09T04:59:00Z</published><updated>2008-10-09T04:59:00Z</updated><author><name>xiao_p</name><uri>http://www.cnblogs.com/xiao_p/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiao_p/archive/2008/10/09/1307195.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiao_p/archive/2008/10/09/1307195.html"/></entry><entry><id>http://www.cnblogs.com/xiao_p/archive/2008/09/05/1285041.html</id><title type="text">一个奇怪的问题，关于重载！</title><summary type="text">关于重载的一个奇怪问题</summary><published>2008-09-05T04:33:00Z</published><updated>2008-09-05T04:33:00Z</updated><author><name>xiao_p</name><uri>http://www.cnblogs.com/xiao_p/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiao_p/archive/2008/09/05/1285041.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiao_p/archive/2008/09/05/1285041.html"/></entry><entry><id>http://www.cnblogs.com/xiao_p/archive/2007/09/18/897392.html</id><title type="text">vssettings 黑色theme</title><summary type="text">帖张效果图 从外国一个网站找的theme，感觉不错！！！不过，默认是给VS2008 使用的，当import settings时候，如果在VS2005下面会报错！解决的办法也很简单，用记事本打开文件，代码的最开始部分如下[代码]只要将最上面的&amp;lt;ApplicationIdentity version="9.0" /&amp;gt;改成&amp;lt;ApplicationIdentity version="8....</summary><published>2007-09-18T08:44:00Z</published><updated>2007-09-18T08:44:00Z</updated><author><name>xiao_p</name><uri>http://www.cnblogs.com/xiao_p/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiao_p/archive/2007/09/18/897392.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiao_p/archive/2007/09/18/897392.html"/></entry></feed>
