<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[带着梦想去追]]></title>
<link>http://yoker.sc0826.com/</link>
<description><![CDATA[采用C#,Python语言，专注于基于互联网的Web,WinForm程序开发]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[yoker.wu@gmail.com(Yoker.Wu)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>带着梦想去追</title> 
	<url>http://yoker.sc0826.com/images/logos.gif</url> 
	<link>http://yoker.sc0826.com/</link> 
	<description>带着梦想去追</description> 
</image>

			<item>
			<link>http://yoker.sc0826.com/default.asp?id=495</link>
			<title><![CDATA[［收集］删除.SVN文件夹方法列表]]></title>
			<author>yoker.wu@gmail.com(Yoker)</author>
			<category><![CDATA[资　源]]></category>
			<pubDate>Mon,12 Jul 2010 19:56:56 +0800</pubDate>
			<guid>http://yoker.sc0826.com/default.asp?id=495</guid>	
		<description><![CDATA[　　Subversion的源代码管理客户端会在你的项目中新建一些名为.svn的隐藏文件夹来保存本地状态。如果你想复制或共享项目目录，这时这些.svn文件就可能成为问题，下面收集了一些方法可使用。<br/><br/>1、<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=%E6%B3%A8%E5%86%8C%E8%A1%A8&amp;client=pub-9809305251274649">注册表</a>法：<br/>建立一个文本文件，取名为Del&#101;teSVNFolders.reg，内容如下：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://yoker.sc0826.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">Windows Registry Editor Version 5.00<br/><br/>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\Del&#101;teSVN] <br/>@=&#34;Del&#101;te SVN Folders&#34;<br/><br/>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\Del&#101;teSVN\command] <br/>@=&#34;cmd.exe /c \&#34;TITLE Removing SVN Folders in %1 &amp;&amp; FOR /r \&#34;%1\&#34; %%f IN (.svn) DO RD /s /q \&#34;%%f\&#34; \&#34;&#34;<br/></div></div><br/>　　此REG文件为文件夹添加了一个“删除SVN的文件夹”的右键上下文菜单。当你选择它，它会删除所有名为.svn的文件夹和它们下面的文件。（如果该项目没有在<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=Subversion&amp;client=pub-9809305251274649">Subversion</a>源代码控制，那它什么也不做）。<br/><br/>　　把这个reg文件并合并进入注册表后，在每一个文件夹上点击右键都会有一个“Del&#101;te SVN Folders”的选项，点击之后，既可以删除这个文件下下面所有的.svn文件夹了。<br/><img src="http://yoker.sc0826.com//attachments/default/month_1007/w2010712195953.jpg" border="0" alt=""/><br/>当然要删除这个菜单也很简单，使用下面的注册表文件即可：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://yoker.sc0826.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">Windows Registry Editor Version 5.00<br/><br/>[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\Del&#101;teSVN] <br/></div></div><br/><br/>2、python<a href="http://yoker.sc0826.com/" target="_blank">脚本</a>法<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://yoker.sc0826.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">import os, stat;<br/><br/>root_dir = r&#39;X:\Project\XX&#39;;<br/><br/>def purge(path):<br/>&nbsp;&nbsp;&nbsp;&nbsp; count = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;for item in os.listdir(path):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; subpath = os.path.join(path, item);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode = os.stat(subpath)[stat.ST_MODE];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if stat.S_ISDIR(mode):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count += purge(subpath);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.chmod(subpath, stat.S_IREAD|stat.S_IWRITE);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.unlink(subpath);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count += 1;<br/>&nbsp;&nbsp;&nbsp;&nbsp; os.rmdir(path);<br/>&nbsp;&nbsp;&nbsp;&nbsp; count += 1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return count;<br/><br/>def callback(arg, directory, files):<br/>&nbsp;&nbsp;&nbsp;&nbsp;if os.path.split(directory)[1]==&#39;.svn&#39;:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print directory;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#使用os.removedirs()是删不掉的<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &#34;Folder [%s](%d files) del&#101;ted.&#34; % (directory, purge(directory));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &#39;--------------------&#39;;<br/><br/>if __name__==&#39;__main__&#39;:<br/>&nbsp;&nbsp;&nbsp;&nbsp;print &#39;start&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; os.path.walk(root_dir, callback, 0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;print &#39;complete.&#39;;<br/></div></div><br/><br/>3、shell命令<br/>linux shell：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://yoker.sc0826.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">find . -type f -iname &#34;.svn&#34; -exec rm -rf {} \;</div></div><br/>windows shell: <br/>在项目平级的目录，执行dos命令： <br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://yoker.sc0826.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">xcopy project_dir project_dir_1 /s /i </div></div><br/>在项目根目录执行以下dos命令 <br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://yoker.sc0826.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">for /r . %%a in (.) do @if exist &#34;%%a\.svn&#34; rd /s /q &#34;%%a\.svn&#34;</div></div><br/><br/>　　其实稍熟悉一点SVN使用的人都知道SVN有一个<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=SVN%E7%9A%84EXPORT%E5%91%BD%E4%BB%A4&amp;client=pub-9809305251274649">EXPORT命令</a>的，为什么我们还要整上面这些东西呐？项目经历多了就会发现，很多时候我们项目内部并没有把所有的文件纳入SVN管理，在我经历的项目中，主要是变动特别频繁的WEB项目，总是或多或少有些资源文件没有纳入SVN管理。<br/><br/>参考：<br/><a target="_blank" href="http://onlypython.group.javaeye.com/group/<a href="http://yoker.sc0826.com/" target="_blank">blog</a>/53926">http://onlypython.group.javaeye.com/group/<a href="http://yoker.sc0826.com/" target="_blank">blog</a>/53926</a><br/><a href="http://hi.baidu.com/primechen/<a href="http://yoker.sc0826.com/" target="_blank">blog</a>/item/c241913831f59cf93b87cef0.html" target="_blank">http://hi.baidu.com/primechen/<a href="http://yoker.sc0826.com/" target="_blank">blog</a>/item/c241913831f59cf93b87cef0.html</a><br/>]]></description>
		</item>
		
			<item>
			<link>http://yoker.sc0826.com/default.asp?id=494</link>
			<title><![CDATA[［上传］关于Asp.Net上传文件后缀判断的那些事]]></title>
			<author>yoker.wu@gmail.com(Yoker)</author>
			<category><![CDATA[编　程]]></category>
			<pubDate>Sat,26 Jun 2010 23:25:47 +0800</pubDate>
			<guid>http://yoker.sc0826.com/default.asp?id=494</guid>	
		<description><![CDATA[　　关于上传文件的漏洞，做为从asp时代过来人记忆一定是很深的。搞<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=asp.net&amp;client=pub-9809305251274649">asp.net</a>开发时间快2年了，说来还真惭愧，没有去认真看过<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=Asp.Net%E7%94%9F%E5%91%BD%E4%B8%AD%E5%91%A8%E6%9C%9F&amp;client=pub-9809305251274649">Asp.Net生命中周期</a>的各个环节，今天心血来潮看了下关于文件上传部分的实现，原来<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=.Net%20Framework&amp;client=pub-9809305251274649">.Net Framework</a>给我们做了真不少的事。<br/><br/>　　首先来看看HttpRequest.Files这个<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=HttpFileCollection&amp;client=pub-9809305251274649">HttpFileCollection</a>，这个集合是用HttpRequest.FillInFilesCollection方法赋值的。让我们来看看具体实现：<div class="UBBPanel"><div class="UBBTitle"><img src="http://yoker.sc0826.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">private void FillInFilesCollection()<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ((this._wr != null) &amp;&amp; StringStartsWithAnotherIgnoreCase(this.ContentType, &#34;multipart/form-data&#34;))<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MultipartContentElement[] multipartContent = this.GetMultipartContent();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (multipartContent != null)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool flag = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (this._flags[64])<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this._flags[64] = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; multipartContent.Length; i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (multipartContent[i].IsFile)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpPostedFile asPostedFile = multipartContent[i].GetAsPostedFile();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (flag)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.ValidateString(asPostedFile.FileName, &#34;filename&#34;, &#34;Request.Files&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this._files.AddFile(multipartContent[i].Name, asPostedFile);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/></div></div><br/>　　其中文件数据的获取，在GetMultipartContent中实现的，有兴趣可以进入去看具体的实现过程，今天我们关注的是文件后缀的判断。<br/><br/>　　在FillInFilesCollection中，注意看this.ValidateString(asPostedFile.FileName, &#34;filename&#34;, &#34;Request.Files&#34;);进入ValidateString方法可以看到第一步就是去掉文件名中的Null Characters，然后就是CrossSiteScriptingValidation.IsDangerousString方法来判断危险字符串，考虑得可真是周到哈。<br/><br/>　　仔细看过GetMultipartContent的实现过程知道，Asp.Net上传文件处理中，获取的文件名是根据Multipart Boundary分隔符来实现的。这是完全没有问题的，只是捣乱的人可能上传一个改了后缀的文件，如果是图片，导致我们显示的图片是个大X，要做到判断怎么办了？asp时代是对文件数据流中去取文件头信息来处理的，Asp.Net时代，也有人写出了相应的代码，且看下面代码：<div class="UBBPanel"><div class="UBBTitle"><img src="http://yoker.sc0826.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">public class PostedFileValidation<br/>{<br/>public enum FileExtension<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// JPEG图片<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;JPG = 255216,<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// GIF图片<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;GIF = 7173,<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// PNG图片<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;PNG = 13780,<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// SWF文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;SWF = 6787,<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// RAR文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;RAR = 8297,<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// ZIP文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;ZIP = 8075,<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// 7Z文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;_7Z = 55122<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;// 255216 jpg<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 7173 gif<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 6677 bmp<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 13780 png<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 6787 swf<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 7790 exe dll<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 8297 rar<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 8075 zip<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 55122 7z<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 6063 xml<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 6033 html<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 239187 aspx<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 117115 cs<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 119105 js<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 102100 txt<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 255254 sql <br/><br/>}<br/>/// &lt;summary&gt;<br/>/// 根据文件头判断文件类型<br/>/// &lt;/summary&gt;<br/>/// &lt;param name=&#34;file&#34;&gt;&lt;/param&gt;<br/>/// &lt;param name=&#34;fileEx&#34;&gt;&lt;/param&gt;<br/>/// &lt;returns&gt;&lt;/returns&gt;<br/>public static bool IsAllowedExtension(HttpPostedFile file, FileExtension[] fileEx)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;int fileLen = file.ContentLength;<br/>&nbsp;&nbsp;&nbsp;&nbsp;byte[] imgArray = new byte[fileLen];<br/>&nbsp;&nbsp;&nbsp;&nbsp;file.InputStream.Read(imgArray, 0, fileLen);<br/>&nbsp;&nbsp;&nbsp;&nbsp;MemoryStream ms = new MemoryStream(imgArray);<br/>&nbsp;&nbsp;&nbsp;&nbsp;BinaryReader br = new BinaryReader(ms);<br/>&nbsp;&nbsp;&nbsp;&nbsp;string fileclass = &#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;byte buffer;<br/>&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&#160;&#160;&#160;&#160;buffer = br.ReadByte();<br/>&#160;&#160;&#160;&#160;fileclass = buffer.ToString();<br/>&#160;&#160;&#160;&#160;buffer = br.ReadByte();<br/>&#160;&#160;&#160;&#160;fileclass += buffer.ToString();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;catch<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;br.Close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;ms.Close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach (FileExtension fe in fileEx)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&#160;&#160;&#160;&#160;if (Int32.Parse(fileclass) == (int)fe)<br/>&#160;&#160;&#160;&#160;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>}<br/>}</div></div><br/>　　具体是否应该是使用这个方法来验证，要看你自己的需求。至此，关于上传文件后缀的那点事就完了，算是又一次深入看了点东西，记录下。另外关于生命周期的可以看看这里：<a href="http://msdn.microsoft.com/zh-cn/library/ms178473.aspx" target="_blank">http://msdn.microsoft.com/zh-cn/library/ms178473.aspx</a><br/><br/>参考：<a href="http://www.supesoft.com/ArticleDisp.asp?ID=4843" target="_blank">http://www.supesoft.com/ArticleDisp.asp?ID=4843</a>]]></description>
		</item>
		
			<item>
			<link>http://yoker.sc0826.com/default.asp?id=492</link>
			<title><![CDATA[［转贴］ORACLE主要的系统表和系统视图]]></title>
			<author>yoker.wu@gmail.com(Yoker)</author>
			<category><![CDATA[知　识]]></category>
			<pubDate>Tue,22 Jun 2010 14:10:19 +0800</pubDate>
			<guid>http://yoker.sc0826.com/default.asp?id=492</guid>	
		<description><![CDATA[　　不知不觉搞<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=oracle&amp;client=pub-9809305251274649">Oracle</a>也差不多2个月了，期间遇到了很多和我一样从MSSQL转过来都遇到的问题，印象最深的要算在<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=PL/SQL&amp;client=pub-9809305251274649">PL/SQL</a>中写了一个up&#100;ate语句而没有commit，导致在程序中执行sel&#101;ct时，被挂起的问题，糊涂了很长时间。<br/><br/>　　<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=oracle&amp;client=pub-9809305251274649">Oracle</a>中关于系统表和系统视图有时候会帮我们做很多事，掌握这些表和视图是很重要的。最简单的一个应用就是收集所有表结构和注释了。后面给出这个SQL语句。<br/><br/>1.系统表<br/><br/>o&#114;ACLE数据库的系统参数都存储在数据库中，可以通过<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=SQL*PLUS&amp;client=pub-9809305251274649">SQL*PLUS</a>，以用户SYSYTEM进行查询。几个重要的表或者视图如下：<br/>v$controlfile：控制文件的信息；<br/>v$datafile：数据文件的信息；<br/>v$log：日志文件的信息；<br/>v$process：处理器的信息；<br/>v$session：会话信息；<br/>v$transaction：事务信息；<br/>v$resource：资源信息；<br/>v$sga：系统全局区的信息。<br/><br/>上面的视图名中的‘v$’,只是视图名字中的字符。类似于上面的视图或表还有很多，位于：<br/>$ORACLE_HOME/RDBMS/ADMIN/CATALOG.SQL文件中。<br/><br/>这些视图或表可以在SQLPLUS中用Sel&#101;ct语句进行查询。<br/><br/>2.数据字典视图<br/><br/>表和列<br/>DBA_TABLES、ALL_TABLES和USER_TABLES显示了有关<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=oracle%E6%95%B0%E6%8D%AE%E5%BA%93&amp;client=pub-9809305251274649">数据库</a>表的一般信息。<br/>DBA_TAB_COLUMNS、ALL_TAB_COLUMNS和USER_TAB_COLUMNS显示了每个数据库表的列的信息。<br/>注意：DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息，包括表。<br/><br/>完整性约束<br/>DBA_CONSTRAINTS、ALL_CONSTRAINTS和USER_CONSTRAINST显示有关约束的一般信息。<br/>DBA_CONS_COLUMNS、ALL_CONS_COLUMNS和USER_CONS_COLUMNS显示有关列的相关约束的一般信息。<br/><br/>视图<br/>DBA_VIEWS、ALL_VIEWS和USER_VIEWS。<br/>注意：DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息，包括视图。<br/><br/>序列<br/>DBA_SEQUENCES、ALL_SEQUENCES和USER_SEQUENCES。<br/>注意：DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息，包括序列。<br/><br/>同义词<br/>DBA_SYNONYMS、ALL_SYNONYMS和USER_SYNONYMS。<br/>注意：DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息，包括同义词。<br/><br/>索引<br/>DBA_INDEXS、ALL_INDEXS、USER_INDEXS、DBA_IND_COLUMNS、ALL_IND_COLUMNS和USER_IND_COLUMNS。<br/><br/>用户<br/>DBA_USERS。<br/><br/>角色<br/>DBA_ROLES。<br/><br/>表空间定额<br/>DBA_TS_QUOTAS。<br/><br/>配置表<br/>DBA_PROFILES。<br/><br/>表空间<br/>DBA_TABLESPACES。<br/><br/>数据文件<br/>DBA_DATA_FILES。<br/><br/>段<br/>DBA_SEGMENTS、USER_SEGMENT。<br/><br/>回滚段<br/>DBA_ROLLBACK_SEGS、V$ROLLNAME、V$ROLLSTAT。<br/><br/>PS:获取所有用户表结构及其备注信息：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://yoker.sc0826.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">sel&#101;ct A.Table_Name 表名,C.comments 表备注,A.column_name 字段名,A.data_type 数据类型,A.data_length 长, <br/>A.data_precision 整数位, A.Data_Scale 小数位, <br/>A.nullable 允许空值,A.Data_default 缺省值, <br/>B.comments 备注<br/>from user_tab_columns A,user_col_comments B, user_tab_comments C<br/>wh&#101;re a.COLUMN_NAME=b.column_name and A.Table_Name = B.Table_Name and A.Table_Name=C.Table_Name</div></div>]]></description>
		</item>
		
			<item>
			<link>http://yoker.sc0826.com/default.asp?id=493</link>
			<title><![CDATA[［生活］关于世界杯的一点东西]]></title>
			<author>yoker.wu@gmail.com(Yoker)</author>
			<category><![CDATA[生　活]]></category>
			<pubDate>Mon,21 Jun 2010 23:55:01 +0800</pubDate>
			<guid>http://yoker.sc0826.com/default.asp?id=493</guid>	
		<description><![CDATA[　　今天世界杯已经完成了一半的赛程了，我不是一个球迷，不过还是跟着看了好些场次，很是搞笑的是冷门全都被我给撞上了。看球期间，最难受的就是卡、模糊、延时太长等等状况。好几次都是QQ消息出来了，我在看的直播还没到。<br/><br/>　　偶然间发现居然我用chrome进入的世界杯直播页面，居然是用flash播放的，而我用IE进入直播页面，是用CCTV的播放控件。IE观看的时候，画面有格的状况发生，而chrome中的效果很是清楚，于是乎我把chrome下的那段flash代码抠了出来，居然还可以直接用。不过别在自己网上提供播放哦，小心版权问题。下面给出代码。<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://yoker.sc0826.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;div id=&#34;cntv_player_elem_id_ocx_box&#34;&gt;&lt;embed type=&#34;application/x-shockwave-flash&#34; src=&#34;<a href="http://player.cntv.cn/standard/cntvLivePlayer.swf?v=0.1.2.3" target="_blank">http://player.cntv.cn/standard/cntvLivePlayer.swf?v=0.1.2.3</a>&#34; width=&#34;480&#34; height=&#34;270&#34; style=&#34;&#34; id=&#34;cntv_live_flash_player&#34; name=&#34;cntv_live_flash_player&#34; bgcolor=&#34;#000000&#34; quality=&#34;best&#34; wmode=&#34;window&#34; menu=&#34;false&#34; allowfullscreen=&#34;true&#34; allowscriptaccess=&#34;always&#34; flashvars=&#34;vodURL=http://biz.vsdn.tv380.com/playlive.php?5B63686E5D445830303030303034387C313337307C317C313030307C434354562D357C687474705B2F63686E5D5B74735D307C687474705B2F74735DVSDNSOOONERCOM00&amp;amp;isChannelRight=true&#34;&gt;&lt;/div&gt;</div></div><br/><br/>　　还有个事情得说说，那就是CCTV的那个播放控件，我没卸载掉。表面上看电脑中似乎是卸载干净没有了，不过当我再次打开直播页面的时候，发现仍然是用播放控件播放的，有点流氓的感觉了。]]></description>
		</item>
		
			<item>
			<link>http://yoker.sc0826.com/default.asp?id=491</link>
			<title><![CDATA[［转贴］强势的妈]]></title>
			<author>yoker.wu@gmail.com(Yoker)</author>
			<category><![CDATA[生　活]]></category>
			<pubDate>Tue,04 May 2010 21:21:45 +0800</pubDate>
			<guid>http://yoker.sc0826.com/default.asp?id=491</guid>	
		<description><![CDATA[我妈说：男人可以喜欢一个女人，但不可以爱上一个女人，这样，所有的雄心壮志都会被磨掉。<br/><br/>我妈说：男人最大的敌人，不是时间，不是权利，不是金钱，甚至不是自己，而是女人和安于现状<br/><br/>我妈说：除了我，和你将来的<a href="http://yaner.sc0826.com/" target="_blank">老婆</a>，谁也不值得你付出太多，为我付出，因为我给了你上半辈子的爱，为你<a href="http://yaner.sc0826.com/" target="_blank">老婆</a>付出，因为下半辈子的爱，将会是她来给<br/><br/>我妈说：不要为了一个女人哭，即使为了我，也不行，男人要把事业和梦想放在第一位，，女人，永远是第二或第三<br/><br/>我妈说：可以让你的敌人知道你喜欢谁，但不要让他知道你爱上了谁，一旦这样，不仅是你，你爱的女人都会有危险，这就是不能爱上女人的原因<br/><br/>我妈说：男人过了10岁就不能再哭了，除非是你的至爱离你而去，你可以流泪，不然，谁都不值得<br/><br/>我妈说：做什么事都要讲究代价，人不为己天诛地灭，做一件事，要想想自己有没有利益，值不值得，做了你能得到什么，至少，你不能因为做了而失去什么，这样不值得<br/><br/>我妈说：男人就要像一个男人，为事业，为梦想，喝醉可以，为女人，不行，我也不许你这样做<br/><br/>我妈说：你要是男人，就要做到一人做事一人当，义气，豪气，侠气，头发是不能留长，说话不能太软，不然就是一个娘们<br/><br/>我妈说：做人要低调，你就太高调，要知道枪打出头鸟，多想想自己出了头，会遇到什么问题<br/><br/>我妈说：男人要有但当，每个男人身边都要有一个圈，站在这个圈里的人，才值得你用生命来守护，至于谁内谁外，就要看自己的本事了<br/><br/>我妈说：交朋友，不能交太纯的，不然你会慢慢被世俗的黄金外衣蒙蔽，只要你有能力，就要交奸而不诈，坏而不滑的人，因为这样，你才能时刻提防自己是否被他戏耍，是否被他玩弄<br/><br/>我妈说：男人要做奸雄，不能是英雄，要像曹操，宁可你负天下人，不可天下人负你，奸雄永远把自己的利益放在第一位，而英雄，则是把别人的利益放在第一位，这个社会，只有奸雄才立得住脚<br/><br/>我妈说：在这个和平年代，没有战争，没有动乱，自然没有万夫可敌的英雄，人们衡量一个人的成就，往往看他的金钱和地位，所以，在不违背道义，不触犯法律，不昧着良心的前提下，不要放弃任何一个得到金钱和权力的机会<br/><br/>我妈说：“血染江山的画，怎敌你眉间一点朱砂”这是P话，不要看到一棵歪脖子树，就以为你可以放弃一片森林，如果你得到了江山，那江山之内的东西，都是你的，即使那时她已经是别人的人了，你也有实力把她抢回来<br/><br/>我妈说：不要轻易相信任何人，在最危难的时候，除了自己的至亲，谁都不能相信，我们不会害你，别人，难说<br/><br/>我妈说：我要你做的，是一个贵族，而不是暴发户，所以无论你多么富有，无论你在什么地方，都要谦逊，礼貌，不卑不亢，虚心学习自己不会的，不懂得，只有这样，你才能不断进步，爬上巅峰<br/><br/>我妈说：在我百年弥留之际，我不要你保证有多富有，多有权利，但我要你保证，你已经具备了创造财富和得到权利的能力，这样，我才放心<br/><br/>我妈说：打女人的男人不是男人，有种你别和自己女人挑，找泰森去，女人是用来疼的，不要让你的女人影响到你的事业，也不要让你的事业影响的你的女人<br/><br/>我妈说：男人一个人在外闯荡，受了再大的委屈，也不要放弃，不能气，要记，记在心里，早晚有一天，让他们全部连本带利还回来<br/><br/>我妈说：不要做让自己后悔的事，要做，就做让别人后悔的事，一辈子不长，如果尽活在回忆里了，就废了<br/><br/>我妈说：不要相信誓言，不要相信承诺，事实能证明一切，真正爱你的人，不会给你太多的誓言和承诺<br/><br/>我妈说：我最鄙视不孝顺的人，你一定不能有了<a href="http://yaner.sc0826.com/" target="_blank">老婆</a>不要娘，老娘将你拉扯到这么大，前半辈子我养你，后半辈子换你养我了，你也应该离那些不孝顺的人远一点，因为他们连自己的至亲都不在乎，怎么会在乎你这个外人？<br/><br/>我妈说：别把自己看的太低，不如你的人多得是，别把自己看的太高，你不如的人多得是，你要做的，就是努力让前者变多，后者变少]]></description>
		</item>
		
			<item>
			<link>http://yoker.sc0826.com/default.asp?id=490</link>
			<title><![CDATA[ ［分享］献给正在郁闷人们的一个小故事]]></title>
			<author>yoker.wu@gmail.com(Yoker)</author>
			<category><![CDATA[知　识]]></category>
			<pubDate>Thu,15 Apr 2010 23:21:33 +0800</pubDate>
			<guid>http://yoker.sc0826.com/default.asp?id=490</guid>	
		<description><![CDATA[　　一头驴，掉到了一个很深很深的废弃的陷阱里。主人权衡一下，认为救它上来不划算，走了，只留下它孤零零的自己。每天，还有人往陷阱里面倒垃圾，驴很生气：自己真倒霉，掉到了陷阱里，主人不要他了，就连死也不让他死得舒服点，每天还有那么多垃圾扔在他旁边。<br/><br/>　　可是有一天，它的思维发生了转变，它决定改变它的人生态度（确切点说应该是驴生态度），它每天都把垃圾踩到自己的脚下，而不是被垃圾所淹没，并从垃圾中找些残羹来维持自己的体能。终于有一天，它重新回到了地面上。 <br/><br/>　　不要抱怨你的不如意，不要抱怨你的男人穷你的女人丑，不要抱怨你没有一个好爸爸，不要抱怨你的工作差，工资少，不要抱怨你空怀一身绝技没人赏识你，现实有太多的不如意，就算生活给你的是垃圾，你同样能把垃圾踩在脚底下，登上世界之巅。这个世界只在乎你是否在到达了一定的高度，而不在乎你是踩在巨人的肩膀上上去的，还是踩在垃圾上上去的。而事实上，踩在垃圾上上去的人更值得尊重。<br/><br/>　　年轻，没有失败！看驴生豪迈，不过从头再来......人生不过如此，又有什么值得你去伤悲的事，你就当做踩在脚下的垃圾好了，让它成为你人生成功的垫脚石。]]></description>
		</item>
		
			<item>
			<link>http://yoker.sc0826.com/default.asp?id=489</link>
			<title><![CDATA[［分享］非安装版mysql怎么使用？]]></title>
			<author>yoker.wu@gmail.com(Yoker)</author>
			<category><![CDATA[编　程]]></category>
			<pubDate>Tue,30 Mar 2010 15:15:17 +0800</pubDate>
			<guid>http://yoker.sc0826.com/default.asp?id=489</guid>	
		<description><![CDATA[　　现在搞XXX+<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=mysql&amp;client=pub-9809305251274649">mysql</a>开发的兄弟，尽管都有好多<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=%E9%9B%86%E6%88%90%E5%B7%A5%E5%85%B7&amp;client=pub-9809305251274649">集成工具</a>可以使用了，但是我要说的如果可以自动动手配置自己仅仅需要的服务，而且是个性的服务，是不是显得更有档次呢？<br/><br/>　　下载了一个非安装版的<a target="_blank" href="http://www.mysql.com/">mysql</a>，怎么使用呐？下面我整理后写出来的这个批处理可以帮你省下不少功夫。是随身携带必备工具之一。<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://yoker.sc0826.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">@echo off<br/><br/>set /P port=设置mysql服务的端口：<br/>set /P charset=设置mysql服务器的字符集：<br/>set /P clientcharset=设置mysql客户端的字符集：<br/><br/>echo [mysqld]&gt;&gt;my.ini<br/>echo basedir=%cd%&gt;&gt;my.ini<br/>echo datadir=%cd%\data&gt;&gt;my.ini<br/>if &#34;%port%&#34; NEQ &#34;&#34; echo port=%port%&gt;&gt;my.ini<br/>echo interactive_timeout=240&gt;&gt;my.ini<br/>echo wait_timeout=240&gt;&gt;my.ini<br/>if &#34;%charset%&#34; NEQ &#34;&#34; echo default-character-set=%charset%&gt;&gt;my.ini<br/>echo [client]&gt;&gt;my.ini<br/>if &#34;%clientcharset%&#34; NEQ &#34;&#34; echo default-character-set=%clientcharset%&gt;&gt;my.ini<br/><br/>mkdir data&gt;nul<br/>echo.<br/>echo 创建配置文件成功，下一步安装服务。<br/>echo.<br/><br/>set /P servicename=请输入服务名称：<br/>echo @echo off&gt;&gt;uninstall.bat<br/>echo net stop %servicename%&gt;&gt;uninstall.bat<br/>echo bin\mysqld-nt --remove %servicename%&gt;&gt;uninstall.bat<br/>echo pause.&gt;&gt;uninstall.bat<br/><br/>echo.<br/>bin\mysqld-nt --install %servicename% --defaults-file=&#34;%cd%\my.ini&#34;<br/>net start %servicename%<br/>pause.</div></div><br/>　　将上面的代码保存为install.bat，放到你下载的非安装版mysql解压后的目录里面，双击便可。当然你也可以更个性化修改一下。]]></description>
		</item>
		
			<item>
			<link>http://yoker.sc0826.com/default.asp?id=487</link>
			<title><![CDATA[［2009］公司年终会议及个人感想]]></title>
			<author>yoker.wu@gmail.com(Yoker)</author>
			<category><![CDATA[生　活]]></category>
			<pubDate>Fri,05 Feb 2010 23:58:56 +0800</pubDate>
			<guid>http://yoker.sc0826.com/default.asp?id=487</guid>	
		<description><![CDATA[　　不知不觉的进入<a target="_blank" href="http://www.it.com.cn/">IT世界网</a>已经快满1年了，一年来做过的东西回头来看，确实不少了，至少今天的会议上提到的很多内容都和我有关，很是高兴。然后不尽人意的地方也很多很多……<br/><br/>　　会议是从早上9点开始的，地点居然是在国安局对面的酒店楼上，据说酒店的客服人员也非常牛，貌似酒店就是政府机关的一部分吧。北京宋老总的开场整体气氛不错，但随后各个大区经理的汇报着实让人提不起精神来，一串串数据直接摆上来而已，其实在这个会议上，数字纵然重要，但我们更希望听到的是他们在这一年中的奋斗历程，经验总结。<br/><br/>　　下午3点后开始才是咱们网站部的总结，今年的收支达到了平衡，再没有让集团供血而活下来。听上去很是高兴的，所以网站销售部的同事对给予帮助的领导鞠躬了。在我看来尤其喜剧，而后他说的那番话让我整么也没有想到的，原话就不说了，他就是希望来年更能够等到领导的支持，回来磕头。悲哀……<br/><br/>　　最后是北京数码连锁老大和集团老总的讲话，这两位领导人说出的话真的是很让人兴奋，特别是集团老总对集团来年计划、未来的规划宏图的讲话。我想在座的每一位，都能够从他的话中听出自己的位置，明白自己的责任。更详细阐述了怎么样才是一个真正的企业家，怎么样才可以成为一个真正的企业家。最后告诫大家要经常的身体锻炼，别再像公司另外一个领导那样腰肌劳损，年轻不觉得，老了是想锻炼都没办法了。]]></description>
		</item>
		
			<item>
			<link>http://yoker.sc0826.com/default.asp?id=486</link>
			<title><![CDATA[［实践］可编辑DataGridViewComboBoxColumn实现方法两例]]></title>
			<author>yoker.wu@gmail.com(Yoker)</author>
			<category><![CDATA[编　程]]></category>
			<pubDate>Tue,02 Feb 2010 00:33:31 +0800</pubDate>
			<guid>http://yoker.sc0826.com/default.asp?id=486</guid>	
		<description><![CDATA[　　在<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=DataGridView&amp;client=pub-9809305251274649">DataGridView</a>控件使用的过程中发现，当他列属性设置为DataGridViewComboBoxColumn的时候，这个<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=ComboBox&amp;client=pub-9809305251274649">ComboBox</a>其实只是一个具有自动完成功能的下拉列表框，并不允许我们输入自己的数据。而我目前的需求其实是想要一个可以自动完成且具有输入自定义数据的功能，怎么办呐？只有<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=%E8%87%AA%E5%AE%9A%E4%B9%89DataGridViewColumn&amp;client=pub-9809305251274649">自定义DataGridViewColumn</a>可以实现，在Google大量资料后，有了下面两个实现方式：<br/><br/>方式一：继承<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=DataGridViewComboBoxCell&amp;client=pub-9809305251274649">DataGridViewComboBoxCell</a>控件，重写<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=InitializeEditingControl&amp;client=pub-9809305251274649">InitializeEditingControl</a>方法。<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://yoker.sc0826.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&nbsp;&nbsp;&nbsp;&nbsp;public class DataGridViewComboEditBoxCell : DataGridViewComboBoxCell<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// 重写初始化控件的编辑状态<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ComboBox comboBox = base.DataGridView.EditingControl as ComboBox;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (comboBox != null)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comboBox.Dro&#112;DownStyle = ComboBoxStyle.Dro&#112;Down;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comboBox.Leave += new EventHandler(comboBox_Leave);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Value = comboBox.Text;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// 绑定事件，处理当用户输入的数据在原ComboBox列表中不存在时，增加数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private void comboBox_Leave(object sender, EventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ComboBox comboBox = sender as ComboBox;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comboBox.Leave -= new EventHandler(comboBox_Leave);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (base.DataGridView.CurrentCell != null &amp;&amp; base.DataGridView.CurrentCell.OwningColumn is DataGridViewComboEditBoxColumn)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataGridViewComboEditBoxColumn col = base.DataGridView.CurrentCell.OwningColumn as DataGridViewComboEditBoxColumn;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!col.Items.Contains(comboBox.Text))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.Items.Add(comboBox.Text);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base.DataGridView.CurrentCell.Value = comboBox.Text;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public class DataGridViewComboEditBoxColumn : DataGridViewComboBoxColumn<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public DataGridViewComboEditBoxColumn()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataGridViewComboEditBoxCell objCell = new DataGridViewComboEditBoxCell();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.CellTemplate = objCell;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}</div></div><br/>方法二：继承DataGridView，重写<a target="_blank" href="http://www.google.cn/search?hl=zh-CN&amp;q=OnEditingControlShowing&amp;client=pub-9809305251274649">OnEditingControlShowing</a>方法。<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://yoker.sc0826.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&nbsp;&nbsp;&nbsp;&nbsp;public class DataGridViewEx : DataGridView<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected override void OnEditingControlShowing(DataGridViewEditingControlShowingEventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (CurrentCell != null &amp;&amp; CurrentCell.OwningColumn is DataGridViewComboBoxColumnEx)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataGridViewComboBoxColumnEx col = CurrentCell.OwningColumn as DataGridViewComboBoxColumnEx;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//修改组合框的样式<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (col.Dro&#112;DownStyle != ComboBoxStyle.Dro&#112;DownList)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ComboBox comboBox = e.Control as ComboBox;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comboBox.Dro&#112;DownStyle = col.Dro&#112;DownStyle;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comboBox.Leave += new EventHandler(comboBox_Leave);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base.OnEditingControlShowing(e);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// 当焦点离开时，需要将新输入的值加入到组合框的 Items 列表中<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;sender&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;e&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void comboBox_Leave(object sender, EventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ComboBox comboBox = sender as ComboBox;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comboBox.Leave -= new EventHandler(comboBox_Leave);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (CurrentCell != null &amp;&amp; CurrentCell.OwningColumn is DataGridViewComboBoxColumnEx)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataGridViewComboBoxColumnEx col = CurrentCell.OwningColumn as DataGridViewComboBoxColumnEx;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col.Items.Add(comboBox.Text);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CurrentCell.Value = comboBox.Text;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public class DataGridViewComboBoxColumnEx : DataGridViewComboBoxColumn<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private ComboBoxStyle dro&#112;DownStyle;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// 控制组合框的外观和功能<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Category(&#34;外观&#34;),Description(&#34;控制组合框的外观和功能&#34;), DefaultValue(ComboBoxStyle.Dro&#112;DownList)]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public ComboBoxStyle Dro&#112;DownStyle<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get { return dro&#112;DownStyle; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set { dro&#112;DownStyle = value; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public DataGridViewComboBoxColumnEx()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dro&#112;DownStyle = ComboBoxStyle.Dro&#112;DownList;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}</div></div>]]></description>
		</item>
		
			<item>
			<link>http://yoker.sc0826.com/default.asp?id=485</link>
			<title><![CDATA[［笑话］比较搞笑的一些内容]]></title>
			<author>yoker.wu@gmail.com(Yoker)</author>
			<category><![CDATA[幽　默]]></category>
			<pubDate>Mon,01 Feb 2010 00:39:36 +0800</pubDate>
			<guid>http://yoker.sc0826.com/default.asp?id=485</guid>	
		<description><![CDATA[　　笑着生活是一天，愁眉苦脸也是一天，你愿意选择哪种呐？人生活有很多不如意，毕竟生活不是人民币，一切的事看开点就好了，在还没有受苦的时候，何苦去思考苦是什么滋味呐？<br/><br/>下面的内容为笑话转贴，尽情的笑吧！<br/><br/>手机和电话结婚,生个孩子叫小灵通,长的丑,信号又差,为了弄明白,手机和电话带小灵通去作了DNA测试,结果大吃一惊:乖乖!原来它爹是对讲机!!<br/><br/>一匹马跟一头驴相恋了,马说:俺爱你,驴说:俺也爱你,马说:你亲我吧,驴说:不行,俺娘说了,驴唇不对马嘴!<br/><br/>夜，酒鬼猛敲路灯杆，路人：干麻哪？酒鬼：敲门，可太太不给开，路人：你慢慢敲吧，你太太一定在家，你看上面还亮着灯呢!<br/><br/>王子被施了魔法，一年只能说一个字，他五年没说话攒够能讲五个字时，来到公主面前说“公主我爱你”公主只回答了一个字，王子就晕倒了。公主说“啥？”<br/><br/>还记得你上幼儿园时吗?老师对孩子们说:谁要是在床上撒尿第一次罚款三元,第二次罚款五元,第三次罚款十元.这时只见你大声问道:老师,包月多少钱?<br/><br/>尊敬的用户:您的手机自本月起已具有提款功能,请将手机砸扁插入提款机即可取款!如不成功请于本信息中心联系.中心网址:三达不溜点不吭你吭谁点靠姆<br/><br/>一老人丢车，当他将新买车放在楼下时他上了三把锁并夹了张纸：让你丫偷！第二天车没有丢，并多了两把锁和一张纸：让你丫骑<br/><br/>0看见8说;小样,胖就胖呗,还扎腰带.7对2说;跪吧,在跪20年也不嫁给你.6对9说酷就酷呗还玩倒立.8看见3跑过去大哭道;大哥谁砍的<br/><br/>史上最爆笑人名:赖月金（还是个男的）,刘产,姬从良,李昌富,范建,夏建仁,范统,朱逸群,秦寿生（不知他父母怎么想的）,庞光大,杜子腾。<br/><br/>猪八戒到韩国做美容,成了帅哥,于是到夜总会找美女。散场后八戒问美女:知道我以前有多丑?我是猪八戒!美女大惊:二师兄,我是老沙!<br/><br/>今天一早，一只老鼠误入花店被一只猫追赶，老鼠发现无路可逃，就顺手拿起一朵玫瑰花准备抵抗，猫看到立马低下了头羞愧的说：死鬼，太突然了!<br/><br/>某男正在公共厕所便秘，忽见一人飞奔而入，顷刻风雨交加稀里哗啦，便赞到：“哥们儿，真羡慕你呀，那么快。”那人说：“羡慕啥，没脱裤子呢！”<br/><br/>你到云南西双版纳旅游,途中遇到一群野猪的围攻,旅客均掏出食品,金钱,野猪不为所动,你掏出仅有的身份证.群猪跪而痛哭道:老大,我们可找到你了!<br/><br/>农夫挑担大粪老外看到后问:大爷,这酱多少钱一斤?农夫不语,老外用手沾了点放进嘴里,心想:你不告诉我多少钱一斤,我也不告诉你你的酱都臭了<br/><br/>海龟酒量高,可是今天却喝醉了,酒醒后朋友问:你咋还能喝醉?海龟叹气:唉!昨晚章鱼非和爷们划拳,狗日的那么多手,看都看不过来,输惨了!]]></description>
		</item>
		
</channel>
</rss>