<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_黑米</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/19348/rss</id><updated>2011-11-26T15:13:18Z</updated><author><name>黑米</name><uri>http://www.cnblogs.com/qkhh/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qkhh/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/19348/rss"/><entry><id>http://www.cnblogs.com/qkhh/archive/2011/04/09/2010649.html</id><title type="text">DataTable用数字索引和用列名索引的性能区别</title><summary type="text">考虑几个常用的类DataTable、GridView（Winform中的DataGridView），当要索引某个单元格的时候，需要用行或列 来定位。行定位一般是用一个整形的数字，而列定位的时候，可以使用整形的数字的索引，也可以使用string的列名来索引。这两者是有一些效率的区别的， 我们用Reflector反编译可以看出来。以DataGridView来举例： 方式1 String cellValue = gv.Rows[0].Cells[0]; 方式2 String cellValue = gv.Rows[0].Cells[&amp;quot;ColumnName&amp;quot;]; 哪个效率会更高呢？</summary><published>2011-04-09T09:26:00Z</published><updated>2011-04-09T09:26:00Z</updated><author><name>黑米</name><uri>http://www.cnblogs.com/qkhh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qkhh/archive/2011/04/09/2010649.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qkhh/archive/2011/04/09/2010649.html"/><content type="html">&lt;div&gt;&lt;p&gt;考虑几个常用的类DataTable、GridView（Winform中的DataGridView），当要索引某个单元格的时候，需要用行或列 来定位。行定位一般是用一个整形的数字，而列定位的时候，可以使用整形的数字的索引，也可以使用string的列名来索引。这两者是有一些效率的区别的， 我们用Reflector反编译可以看出来。以DataGridView来举例：&lt;/p&gt; &lt;p&gt;方式1&lt;br /&gt; String cellValue = gv.Rows[0].Cells[0];&lt;/p&gt; &lt;p&gt;方式2&lt;br /&gt; String cellValue = gv.Rows[0].Cells["ColumnName"];&lt;/p&gt; &lt;p&gt;哪个效率会更高呢？&lt;br /&gt; Cells属性的类型是DataGridViewCellCollection类型，我们反编译查看它们对于[]运行符的实现：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;DataGridViewColumn&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;[&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;index]&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&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;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(DataGridViewColumn)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.items[index];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;DataGridViewColumn&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;[&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;columnName]&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&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;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(columnName&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;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;{&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;throw&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;ArgumentNullException(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;columnName&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;&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;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;count&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;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.items.Count;&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;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i&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;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;lt;&amp;nbsp;count;&amp;nbsp;i&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;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;DataGridViewColumn&amp;nbsp;column&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(DataGridViewColumn)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.items[i];&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;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Equals(column.Name,&amp;nbsp;columnName,&amp;nbsp;StringComparison.OrdinalIgnoreCase))&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: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;column;&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;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&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;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可见，使用数字引用的，直接返回了内部列表对应的索引的值，而使用列名引用的，还需要遍历DataGridView的所有列，找到对应的列的索引， 再返回。这种方法造成了循环。这个循环造成的效率的降低。&lt;/p&gt; &lt;p&gt;如果进行大量数据绑定、或进行大量循环的时候，最好是使用列序号去索引，而不是使用列名进行索引。&lt;/p&gt; &lt;p&gt;在这里不得不说一下，.net  框架的类库封装了许多好用的类和方法，但是由于封装得太甚，许多可能造成效率降低的代码都被封装了。而看似越好用的方法，越要小心它的效率了。&lt;/p&gt;&lt;p&gt;&lt;div&gt;&lt;a title="查看更多" href="http://www.danzhuye.com/?p=230"&gt;查看更多&lt;/a&gt; &lt;/div&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/qkhh/aggbug/2010649.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qkhh/archive/2011/04/09/2010649.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qkhh/archive/2011/03/31/2001601.html</id><title type="text">Sql Server附加数据库的时候出现Operating system error 5: &amp;quot;5(Access is denied.)&amp;quot; 的错误</title><summary type="text">在Win7下安装了SQL SERVER2008。接着尝试附加一个现有的数据库mdf文件，出现了错误，Unable to open the physical file &amp;quot;d:\***.mdf&amp;quot;. Operating system error 5: &amp;quot;5(Access is denied.)&amp;quot;. 在微软的官方网站找到了一个帖子，说是要设置SQL server相关账户对文件的访问权限，按照上面说的弄了好久也没成功。最后一想，是不是忽略了让Management Studio以管理员身份运行了？于是马上尝试，成功！</summary><published>2011-03-31T14:47:00Z</published><updated>2011-03-31T14:47:00Z</updated><author><name>黑米</name><uri>http://www.cnblogs.com/qkhh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qkhh/archive/2011/03/31/2001601.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qkhh/archive/2011/03/31/2001601.html"/><content type="html">&lt;p&gt;在Win7下安装了SQL SERVER2008。接着尝试附加一个现有的数据库mdf文件，出现了错误，&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Unable to open the physical file "d:\***.mdf". Operating system error 5: "5(Access is denied.)". &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在微软的官方网站找到了一个帖子，说是要设置SQL server相关账户对文件的访问权限，按照上面说的弄了好久也没成功。最后一想，是不是忽略了让Management Studio以管理员身份运行了？于是马上尝试，成功！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/qkhh/aggbug/2001601.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qkhh/archive/2011/03/31/2001601.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qkhh/archive/2011/03/31/2001257.html</id><title type="text">解决dotnetbar textbox控件在按Enter键后失去焦点的问题</title><summary type="text">DotnetBar提供的TextBox控件修改了默认的行为，当用户按Enter键的时候，会将焦点跳转到其它的控件上，而Ctrl+Enter才会是默认的行为。有时候界面的某个输入框并不需要这样的功能，比如说多行的TextBox，就需要Enter键另起一行， 并且焦点仍在TextBox上。要解决这个问题，首先需要设置TextBox的AcceptEnter为True，不过仅仅设置这个属性还不起作用。还需要响应TextBox的KeyDown事件，当Keycode是Enter的时候，设置Handle为true,并且设置SupressKeyDownEvent为true.有时候这个办法还不起作用。DotNe</summary><published>2011-03-31T08:51:00Z</published><updated>2011-03-31T08:51:00Z</updated><author><name>黑米</name><uri>http://www.cnblogs.com/qkhh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qkhh/archive/2011/03/31/2001257.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qkhh/archive/2011/03/31/2001257.html"/><content type="html">&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;DotnetBar&lt;font face="宋体"&gt;提供的&lt;/font&gt;&lt;font face="Times New Roman"&gt;TextBox&lt;/font&gt;&lt;font face="宋体"&gt;控件修改了默认的行为，当用户按&lt;/font&gt;&lt;font face="Times New Roman"&gt;Enter&lt;/font&gt;&lt;font face="宋体"&gt;键的时候，会将焦点跳转到其它的控件上，而&lt;/font&gt;&lt;font face="Times New Roman"&gt;Ctrl&amp;nbsp;+&amp;nbsp;Enter&lt;/font&gt;&lt;font face="宋体"&gt;才会是默认的行为。有时候界面的某个输入框并不需要这样的功能，比如说多行的&lt;/font&gt;&lt;font face="Times New Roman"&gt;TextBox&lt;/font&gt;&lt;font face="宋体"&gt;，就需要&lt;/font&gt;&lt;font face="Times New Roman"&gt;Enter&lt;/font&gt;&lt;font face="宋体"&gt;键另起一行， 并且焦点仍在&lt;/font&gt;&lt;font face="Times New Roman"&gt;TextBox&lt;/font&gt;&lt;font face="宋体"&gt;上。&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;要解决这个问题，首先需要设置&lt;font face="Times New Roman"&gt;TextBox&lt;/font&gt;&lt;font face="宋体"&gt;的&lt;/font&gt;&lt;font face="Times New Roman"&gt;AcceptEnter&lt;/font&gt;&lt;font face="宋体"&gt;为&lt;/font&gt;&lt;font face="Times New Roman"&gt;True&lt;/font&gt;&lt;font face="宋体"&gt;，不过仅仅设置这个属性还不起作用。还需要响应&lt;/font&gt;&lt;font face="Times New Roman"&gt;TextBox&lt;/font&gt;&lt;font face="宋体"&gt;的&lt;/font&gt;&lt;font face="Times New Roman"&gt;KeyDown&lt;/font&gt;&lt;font face="宋体"&gt;事件，当&lt;/font&gt;&lt;font face="Times New Roman"&gt;Keycode&lt;/font&gt;&lt;font face="宋体"&gt;是&lt;/font&gt;&lt;font face="Times New Roman"&gt;Enter&lt;/font&gt;&lt;font face="宋体"&gt;的时候，设置&lt;/font&gt;&lt;font face="Times New Roman"&gt;Handle&lt;/font&gt;&lt;font face="宋体"&gt;为&lt;/font&gt;&lt;font face="Times New Roman"&gt;true,&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;并且设置&lt;/font&gt;&lt;font face="Times New Roman"&gt;SupressKeyDownEvent&lt;/font&gt;&lt;font face="宋体"&gt;为&lt;/font&gt;&lt;font face="Times New Roman"&gt;true.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;有时候这个办法还不起作用。&lt;font face="Times New Roman"&gt;DotNetBar&lt;/font&gt;&lt;font face="宋体"&gt;有一个&lt;/font&gt;&lt;font face="Times New Roman"&gt;TextBoxItem&lt;/font&gt;&lt;font face="宋体"&gt;控件，用这个方法，即使对它封装的&lt;/font&gt;&lt;font face="Times New Roman"&gt;TextBox&lt;/font&gt;&lt;font face="宋体"&gt;控件响应事件，也不起作用。可以用另一个办法，在响应&lt;/font&gt;&lt;font face="Times New Roman"&gt;KeyDown&lt;/font&gt;&lt;font face="宋体"&gt;事件时，开始一个&lt;/font&gt;&lt;font face="Times New Roman"&gt;Timer&lt;/font&gt;&lt;font face="宋体"&gt;（或一个新的线程），把timer的时间设置得特别短，如50毫秒，在响应函数中重新将焦点设回到&lt;/font&gt;&lt;font face="Times New Roman"&gt;TextBox&lt;/font&gt;&lt;font face="宋体"&gt;。&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" &gt;&lt;span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"&gt;&lt;a title="个人主页同步更新" href="http://www.danzhuye.com/?p=226"&gt;个人主页同步更新&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;!--EndFragment--&gt;  &lt;img src="http://www.cnblogs.com/qkhh/aggbug/2001257.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qkhh/archive/2011/03/31/2001257.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qkhh/archive/2011/03/07/1975537.html</id><title type="text">程序跳过try-catch地崩溃</title><summary type="text">不知道是不是因为装了乱七八糟的软件导致的，异常竟然会跳过try-catch块造成程序崩溃。有时候一个Enter键都会造成崩溃。在弹出的对话框中点击“调试”的时候，又提示：***.exe[6780]中发生未处理的Win32异常。对此异常的实时调试失败，错误为：存储空间不足，无法完成此操作。点击确定后，直接退出，什么都没有了。</summary><published>2011-03-07T10:37:00Z</published><updated>2011-03-07T10:37:00Z</updated><author><name>黑米</name><uri>http://www.cnblogs.com/qkhh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qkhh/archive/2011/03/07/1975537.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qkhh/archive/2011/03/07/1975537.html"/><content type="html">&lt;p&gt;不知道是不是因为装了乱七八糟的软件导致的，异常竟然会跳过try-catch块造成程序崩溃。有时候一个Enter键都会造成崩溃。在弹出的对话框中点击&amp;#8220;调试&amp;#8221;的时候，又提示：***.exe[6780]中发生未处理的Win32异常。对此异常的实时调试失败，错误为：存储空间不足，无法完成此操作。点击确定后，直接退出，什么都没有了。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/qkhh/aggbug/1975537.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qkhh/archive/2011/03/07/1975537.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qkhh/archive/2011/01/21/1940973.html</id><title type="text">给程序加上UAC控制的几个链接</title><summary type="text">1. http://social.msdn.microsoft.com/Forums/en-US/windowscompatibility/thread/2dfd23ee-ebfa-412c-a5dd-761ec1b55683/2. http://www.cnblogs.com/Jialiang/archive/2010/03/23/1692338.html3. http://connect.microsoft.com/VisualStudio/feedback/details/532962/two-requestedprivileges-manifest-values-are-placed-</summary><published>2011-01-21T03:26:00Z</published><updated>2011-01-21T03:26:00Z</updated><author><name>黑米</name><uri>http://www.cnblogs.com/qkhh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qkhh/archive/2011/01/21/1940973.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qkhh/archive/2011/01/21/1940973.html"/><content type="html">&lt;p&gt;1. &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowscompatibility/thread/2dfd23ee-ebfa-412c-a5dd-761ec1b55683/"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowscompatibility/thread/2dfd23ee-ebfa-412c-a5dd-761ec1b55683/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2. &lt;a href="http://www.cnblogs.com/Jialiang/archive/2010/03/23/1692338.html"&gt;http://www.cnblogs.com/Jialiang/archive/2010/03/23/1692338.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3. &lt;a href="http://connect.microsoft.com/VisualStudio/feedback/details/532962/two-requestedprivileges-manifest-values-are-placed-in-clickonce-manifest-when-publishing"&gt;http://connect.microsoft.com/VisualStudio/feedback/details/532962/two-requestedprivileges-manifest-values-are-placed-in-clickonce-manifest-when-publishing&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/qkhh/aggbug/1940973.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qkhh/archive/2011/01/21/1940973.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qkhh/archive/2011/01/21/1940825.html</id><title type="text">程序出现了异常：应用程序无法启动，因为应用程序的并行配置不正确</title><summary type="text">在其它的机器编译的程序拷贝另一个Win7系统的机器上，双击运行，弹出了错误对话框：应用程序无法启动，因为应用程序的并行配置不正确。有关详细信息，请参阅应用程序事件日志，或使用命令行 sxstrace.exe 工具。试了几个方法没有成功，最后到bin下删除程序文件对应的manifest文件，即***.exe.manifest，运行后成功。</summary><published>2011-01-21T01:26:00Z</published><updated>2011-01-21T01:26:00Z</updated><author><name>黑米</name><uri>http://www.cnblogs.com/qkhh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qkhh/archive/2011/01/21/1940825.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qkhh/archive/2011/01/21/1940825.html"/><content type="html">&lt;p&gt;在其它的机器编译的程序拷贝另一个Win7系统的机器上，双击运行，弹出了错误对话框：&lt;/p&gt;&#xD;
&lt;p&gt;应用程序无法启动，因为应用程序的并行配置不正确。有关详细信息，请参阅应用程序事件日志，或使用命令行 s&lt;br /&gt;xstrace.exe 工具。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;试了几个方法没有成功，最后到bin下删除程序文件对应的manifest文件，即***.exe.manifest，运行后成功。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/qkhh/aggbug/1940825.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qkhh/archive/2011/01/21/1940825.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qkhh/archive/2010/12/28/1919130.html</id><title type="text">关于最近的一篇文章</title><summary type="text">现在也想不起来当时是哪跟神经出的问题，居然写了这么个东西。以后再也不写与这相关的东西了，还是关注我的技术吧。</summary><published>2010-12-28T13:30:00Z</published><updated>2010-12-28T13:30:00Z</updated><author><name>黑米</name><uri>http://www.cnblogs.com/qkhh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qkhh/archive/2010/12/28/1919130.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qkhh/archive/2010/12/28/1919130.html"/><content type="html">现在也想不起来当时是哪跟神经出的问题，居然写了这么个东西。以后再也不写与这相关的东西了，还是关注我的技术吧。&lt;img src="http://www.cnblogs.com/qkhh/aggbug/1919130.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qkhh/archive/2010/12/28/1919130.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qkhh/archive/2010/10/31/1865841.html</id><title type="text">你相信360隐私保护器的监控的结果吗？一起来复习数理逻辑</title><summary type="text">这里要分析的事件就是：360监控由记事本改成的QQ也报窥探隐私。这个事件是360隐私保护器的结论，接下来演示它如果搬起石头砸自己的脚。如果看官没有理清逻辑的话，可以看下面的一段形式化的推理，顺便也温习一下数理逻辑。在这里有三个断定性的事件，也就是命题：P：记事本窥探隐私Q：QQ窥探隐私R：360的扫描结果正确此外，有两个为真的式子（经过实践检验的，360的图）：S：R-&amp;gt;PT：R-&amp;gt;Q...</summary><published>2010-10-31T15:43:00Z</published><updated>2010-10-31T15:43:00Z</updated><author><name>黑米</name><uri>http://www.cnblogs.com/qkhh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qkhh/archive/2010/10/31/1865841.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qkhh/archive/2010/10/31/1865841.html"/><content type="html">&lt;p style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;这里要分析的事件就是：360监控由记事本改成的QQ也报窥探隐私。这个事件是360隐私保护器的结论，接下来演示它如果搬起石头砸自己的脚。如果看官没有理清逻辑的话，可以看下面的一段形式化的推理，顺便也温习一下数理逻辑。在这里有三个断定性的事件，也就是命题：&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;P：记事本窥探隐私&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;Q：QQ窥探隐私&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;R：360的扫描结果正确&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;此外，有两个为真的式子（经过实践检验的，360的图）：&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;S：R-&amp;gt;P&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;T：R-&amp;gt;Q&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;现在的目的是用上面的条件来断定P,&amp;nbsp;Q,&amp;nbsp;R三个命题的真伪。先看结论为真的S，学过数理逻辑的都知道，以下三种取值都可以让R-&amp;gt;P为真：&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;（1）&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;R=1，P=1&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;（2）&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;R=0，P=1&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;（3）&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;R=0，P=0&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;如果这样的话，就得不出结论了。不过我们可以限定未知条件，来获取在某个条件下的结论。根据现实中的情况，我们可以认为，记事本不会存在窥探隐私的行为，因此我们可以把P=0作为条件之一。如果这样的话，就能马上得出结论：&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;要让R-&amp;gt;P为真，只能是取条件（3），即R=0，P=0.&amp;nbsp;而对于T为真来说，也存在三种取值：&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;（4）&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;R=1，Q=1&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;（5）&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;R=0，Q=1&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;（6）&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;R=0，Q=0&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;由于已经有了R=0，因此，只能取（5）或者（6），即Q=0或Q=1.&amp;nbsp;各位看官，结论是什么？R=0,&amp;nbsp;Q=0或Q=1.&amp;nbsp;描述出来就是：&amp;#8220;360的扫描结果正确&amp;#8221;这是个假命题，而QQ是否窥探隐私不确认。也就是说，&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体'; color: red;"&gt;如果记事本不存在窥探隐私的行为的话，那么360的扫描结果正确相当于什么都没有说，相反却证明了自己是个弱智。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;请注意，这个结论的前提是：记事本不存在窥探隐私的行为，当然如果记事本存在窥探隐私的行为，又会是另一个结论了。但谁会相信微软有那么广泛的爱好呢？&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;鄙人是冒着被人骂的压力发上来的。必需郑重说明，除了用腾讯的产品的话，个人与它没有任何瓜葛。最后想说句的是，如果你不是水军的成员，就不要瞎上去干架了，围着一个错误的实事在转来转去，还闹得像泼妇一样骂街，实在不值得。&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 10.5pt; font-family: '宋体';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/qkhh/aggbug/1865841.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qkhh/archive/2010/10/31/1865841.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qkhh/archive/2010/10/12/1849159.html</id><title type="text">OpenSmtp 的代码修正，支持中文和HTTP代理连接</title><summary type="text">如今你的项目中在偏爱了哪个邮件发送组件，对于OpenSmtp的老面孔是否还记得？这个从.NET 1.1起就伴随着我们的邮件发送组件就带着不少的BUG：1. 对中文的支持不好，有时候正文会变成乱码，有时候标题长了就是乱码了，还有附件中的中文文件名也会是乱码2. 不支持通过代理服务器发送最近的项目要用邮件组件，于是再次把这个老朋友请出来，且从网上找到了解决中文乱码的办法。另外，为了适应项目的要求，还加...</summary><published>2010-10-12T12:18:00Z</published><updated>2010-10-12T12:18:00Z</updated><author><name>黑米</name><uri>http://www.cnblogs.com/qkhh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qkhh/archive/2010/10/12/1849159.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qkhh/archive/2010/10/12/1849159.html"/><content type="html">&lt;p&gt;如今你的项目中在偏爱了哪个邮件发送组件，对于OpenSmtp的老面孔是否还记得？这个从.NET 1.1起就伴随着我们的邮件发送组件就带着不少的BUG：&lt;/p&gt;&#xD;
&lt;p&gt;1. 对中文的支持不好，有时候正文会变成乱码，有时候标题长了就是乱码了，还有附件中的中文文件名也会是乱码&lt;/p&gt;&#xD;
&lt;p&gt;2. 不支持通过代理服务器发送&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;最近的项目要用邮件组件，于是再次把这个老朋友请出来，且从网上找到了解决中文乱码的办法。另外，为了适应项目的要求，还加入了通过代理发送的ProxySmtp类。虽然技术含量不高，也总算是弄了一个无明显BUG包。本人不忍独享，故拿出来供大家使用。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a title="OpenSmtp" href="http://files.cnblogs.com/qkhh/OpenSmtp/OpenSmtp.zip"&gt;OpenSmtp&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a title="OpenSmtp源文件" href="http://files.cnblogs.com/qkhh/OpenSmtp/OpenSmtp-src.zip"&gt;OpenSmtp源文件&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/qkhh/aggbug/1849159.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qkhh/archive/2010/10/12/1849159.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qkhh/archive/2010/10/09/1846437.html</id><title type="text">检测TextBox的回车键事件</title><summary type="text">事情是这样的，项目中使用了DotNetBar组件，其中一个界面使用了TextBoxX，并设置为多行输入。运行后发现这个输入框不接收回车事件。原因是DotNetBar把控件的回事事件变成了Tab事件，使得按回车可以在控件之间进行切换。但对于多行的TextBoxX，明显是要回车的，看来这是DotNetBar的一个BUG了（也许是一个未考虑到的应用场景）。既然它没有处理，我手动处理一下也行，也就是加一个...</summary><published>2010-10-09T03:09:00Z</published><updated>2010-10-09T03:09:00Z</updated><author><name>黑米</name><uri>http://www.cnblogs.com/qkhh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qkhh/archive/2010/10/09/1846437.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qkhh/archive/2010/10/09/1846437.html"/><content type="html">&lt;p&gt;事情是这样的，项目中使用了DotNetBar组件，其中一个界面使用了TextBoxX，并设置为多行输入。运行后发现这个输入框不接收回车事件。原因是DotNetBar把控件的回事事件变成了Tab事件，使得按回车可以在控件之间进行切换。但对于多行的TextBoxX，明显是要回车的，看来这是DotNetBar的一个BUG了（也许是一个未考虑到的应用场景）。既然它没有处理，我手动处理一下也行，也就是加一个事件几行代码的事情。于是有了下面的代码：&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;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;txtContent_KeyDown(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sender,&amp;nbsp;KeyEventArgs&amp;nbsp;e)&lt;br /&gt;{&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;(e.KeyCode&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Keys.Enter)&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;&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;e.Control&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;&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;e.Shift&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;&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;e.Alt)&lt;br /&gt;&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;e.Handled&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;/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;txtContent.AppendText(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;\r\n&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;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;然后就杯具了，if中的代码不论怎么样都不执行。断点调试后才发现，这两个值e.KeyCode 和 &lt;span style="color: #000000"&gt;Keys.Enter这两个值确实不相等，看来DotnetBar的控件在内部进行了一些处理。最后试了下面的方法才生效：&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: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;((e.KeyCode&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(Keys.Enter&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&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;Keys.MButton))&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;&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;e.Control&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;&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;e.Shift&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;&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;e.Alt)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;心中无限感慨，人不能NB到连这样的参数也要修改！最后的完整的代码是：&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;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;txtContent_KeyDown(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sender,&amp;nbsp;KeyEventArgs&amp;nbsp;e)&lt;br /&gt;{&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;((e.KeyCode&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(Keys.Enter&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&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;Keys.MButton))&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;&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;e.Control&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;&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;e.Shift&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;&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;e.Alt)&lt;br /&gt;&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;e.Handled&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.SuppressKeyPress&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;txtContent.AppendText(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;\r\n&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;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/qkhh/aggbug/1846437.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qkhh/archive/2010/10/09/1846437.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
