<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-7084184</id><updated>2009-11-07T04:45:53.984+08:00</updated><title type='text'>.NET Midway</title><subtitle type='html'>This blog is focused on sharing Microsoft .NET technology, which include C#, DesignPattern, XML, WebService, .NET Remoting, WinFX, CLR, .NET Framework 3.0, SQL Server 2005...etc.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default?start-index=26&amp;max-results=25'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>223</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7084184.post-792626182784845159</id><published>2009-11-07T04:45:00.001+08:00</published><updated>2009-11-07T04:45:54.022+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Hot to Run as Administrator in Windows 7</title><content type='html'>&lt;p&gt;一般而言，我們很習慣在啟動的「搜尋程式及檔案」的對話框來代替command line window，用來執行程式。   &lt;br /&gt;例如：直接輸入 explorer，執行IE or 檔案總管；或是 notepad c:\windows\system32\drivers\etc\hosts 直接用notepad 開啟檔案進行編修。    &lt;br /&gt;自從UAC出現後，這個功能常常會困擾我的是…部份這樣的動作，卻是需要administrator的權限，也就是它需要 Run As Administrator的功能。&lt;/p&gt;  &lt;p&gt;後來，才發現…其實只要在對話框中輸入完指令：   &lt;br /&gt;notepad c:\windows\system32\drivers\etc\hosts    &lt;br /&gt;不要按enter，改用ctrl + shit + enter，就會自動切換到administrator的權限&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-792626182784845159?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/792626182784845159/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=792626182784845159&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/792626182784845159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/792626182784845159'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/11/hot-to-run-as-administrator-in-windows.html' title='Hot to Run as Administrator in Windows 7'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-7820434357529122357</id><published>2009-10-20T02:46:00.000+08:00</published><updated>2009-10-20T02:47:37.494+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft SQL Server'/><title type='text'>如何將SQL Server 2005中資料表的大量資料匯出</title><content type='html'>&lt;p&gt;其實可以利用SQL Server 2005所提供的Utility - BCP，將資料庫中的大量資料匯出。    &lt;br /&gt;bcp公用程式會在Microsoft SQL Server和使用者指定格式的資料檔案之間大量複製資料。而當你在伺服器上安裝Microsoft SQL Server工具的同時，也會安裝bcp用戶端，另外只有同時安裝SQL Server 工具和SQL Native Client時，才能支援XML格式檔案。&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 100.16%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 62px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;bcp [tablename] out [filename.txt] -c -T&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-7820434357529122357?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/7820434357529122357/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=7820434357529122357&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/7820434357529122357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/7820434357529122357'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/10/sql-server-2005.html' title='如何將SQL Server 2005中資料表的大量資料匯出'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-2483364577275828751</id><published>2009-10-18T04:25:00.001+08:00</published><updated>2009-10-18T04:29:34.391+08:00</updated><title type='text'>如何在繁體中文的作業系統中，不用安裝Multi-Language Pack也能執行簡體中文、日文的軟體？</title><content type='html'>&lt;p&gt;請參考這份文章   &lt;br /&gt;&lt;a title="http://toget.pchome.com.tw/intro/utility_other/23153.html" href="http://toget.pchome.com.tw/intro/utility_other/23153.html"&gt;http://toget.pchome.com.tw/intro/utility_other/23153.html&lt;/a&gt;    &lt;br /&gt;&lt;a title="http://www.metro.com.tw/archiver/tid-3184.html" href="http://www.metro.com.tw/archiver/tid-3184.html"&gt;http://www.metro.com.tw/archiver/tid-3184.html&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-2483364577275828751?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/2483364577275828751/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=2483364577275828751&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/2483364577275828751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/2483364577275828751'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/10/multi-language-pack.html' title='如何在繁體中文的作業系統中，不用安裝Multi-Language Pack也能執行簡體中文、日文的軟體？'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-8561579469564579170</id><published>2009-07-23T11:40:00.000+08:00</published><updated>2009-07-23T12:14:09.014+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='其他'/><title type='text'>一套可以產生資料庫文件的工具 - SqlSpec</title><content type='html'>&lt;p&gt;&lt;a href="http://www.elsasoft.org/index.html" target="_blank"&gt;Elsasoft Sqlspec&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;最近由微軟MVP的Private News Group中，看到一套可以產生資料庫文件的工具，非常興奮。因為我想找這種工具，已經很久了！！我的需求很單純，只是想要可以選擇性的產生資料庫各種物件說明，一直找不到很好用的工具，後來我乾脆自己寫了一個工具程式給公司用，看到這套工具軟體後，就急忙下載下來玩玩看。&lt;/p&gt;  &lt;p&gt;首先，這套工具程式並不需要額外安裝，開啟後就可以直接執行了！！整個畫面如下：   &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_BiAIh45tOHE/SmfjRzi_XsI/AAAAAAAAEG0/y6tgK9w4KYw/s1600-h/image%5B9%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_BiAIh45tOHE/SmfjS8eB6aI/AAAAAAAAEG4/4F5IguZjtdY/image_thumb%5B5%5D.png?imgmax=800" width="419" height="304" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_BiAIh45tOHE/SmfjT_oO_SI/AAAAAAAAEG8/_BGieevU4lo/s1600-h/image%5B12%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_BiAIh45tOHE/SmfjU4czMGI/AAAAAAAAEHA/aBbW8dZqaWQ/image_thumb%5B8%5D.png?imgmax=800" width="419" height="304" /&gt;&lt;/a&gt;     &lt;br /&gt;由上面兩個畫面，我們可以發現到它支援蠻多種的資料庫喔…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_BiAIh45tOHE/SmfjWWT6CrI/AAAAAAAAEHE/h-UQalRySPg/s1600-h/image%5B17%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_BiAIh45tOHE/SmfjXjAsdQI/AAAAAAAAEHI/cOxDAQwlQKU/image_thumb%5B11%5D.png?imgmax=800" width="419" height="304" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;可以動態選擇產生資料庫中哪些物件的說明&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_BiAIh45tOHE/SmfjYw38OrI/AAAAAAAAEHM/9m8SlotwugM/s1600-h/image%5B22%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_BiAIh45tOHE/SmfjZ6dXIbI/AAAAAAAAEHQ/xOM6Y7duWBY/image_thumb%5B14%5D.png?imgmax=800" width="419" height="304" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;上面是軟體的設定畫面&lt;/p&gt;  &lt;p&gt;這套軟體真的很簡單操作 - 非常的直覺。那…就直接按照直覺操作囉。&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;首先，先指定資料庫     &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_BiAIh45tOHE/Smfjawro5xI/AAAAAAAAEHU/viQYb15njFA/s1600-h/image%5B28%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_BiAIh45tOHE/Smfjbi_7QVI/AAAAAAAAEHY/pV6cWVk6Y_A/image_thumb%5B18%5D.png?imgmax=800" width="354" height="304" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;接下來，指定資料庫物件。一般而言，我們產生給客戶用的TableLayout，大概只會含兩個：Table &amp;amp; View。     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_BiAIh45tOHE/SmfjdLRWDGI/AAAAAAAAEHc/te4mM-DQaxM/s1600-h/image%5B34%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_BiAIh45tOHE/SmfjeGeqrXI/AAAAAAAAEHg/XjXjFE68AYo/image_thumb%5B22%5D.png?imgmax=800" width="354" height="304" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;直接按下「Go」按鈕，產生文件。我們來看看產生出來的文件長相：     &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_BiAIh45tOHE/Smfje91mEZI/AAAAAAAAEHk/qw6CJXHF7XU/s1600-h/image%5B39%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_BiAIh45tOHE/SmfjfyrkpHI/AAAAAAAAEHo/G3LBWCsY7jo/image_thumb%5B25%5D.png?imgmax=800" width="354" height="304" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_BiAIh45tOHE/Smfjgw_s2YI/AAAAAAAAEHs/l7w73cj6Sck/s1600-h/image%5B44%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_BiAIh45tOHE/Smfjh3MppsI/AAAAAAAAEHw/gjXiOVDIkzk/image_thumb%5B28%5D.png?imgmax=800" width="354" height="304" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_BiAIh45tOHE/SmfjiwnSLjI/AAAAAAAAEH0/3JmHHQOVVdA/s1600-h/image%5B47%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_BiAIh45tOHE/Smfjjt8PqCI/AAAAAAAAEH4/bTSbwC3JPeE/image_thumb%5B29%5D.png?imgmax=800" width="354" height="217" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;測試的結果而言，這套軟體我個人的感覺是既輕巧又可以解決我的問題，真的是一個很好用的工具程式。而且可以同時產生各種資料庫的資料庫文件，真的是蠻不錯。   &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-8561579469564579170?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/8561579469564579170/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=8561579469564579170&amp;isPopup=true' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/8561579469564579170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/8561579469564579170'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/07/sqlspec.html' title='一套可以產生資料庫文件的工具 - SqlSpec'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-6710055556220678654</id><published>2009-07-21T00:14:00.001+08:00</published><updated>2009-07-21T00:14:54.028+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='其他'/><title type='text'>MS Office Viewer (free)</title><content type='html'>&lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=D88E4542-B174-4198-AE31-6884E9EDD524&amp;amp;displaylang=zh-tw" target="_blank"&gt;Visio 2007 Viewer&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=048DC840-14E1-467D-8DCA-19D2A8FD7485&amp;amp;displaylang=zh-tw" target="_blank"&gt;Powerpoint viewer 2007&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=3657CE88-7CFA-457A-9AEC-F4F827F20CAC&amp;amp;displaylang=zh-tw" target="_blank"&gt;Word Viewer&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;p&gt;即使沒有安裝 Word，也可以檢視、列印和複製 Word 文件。此下載取代了 Word Viewer 2003 和先前所有的 Word Viewer 版本。      &lt;br /&gt;Word Viewer 搭配 &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=941b3470-3ae9-4aee-8f43-c6bb74cd1466&amp;amp;displaylang=zh-tw"&gt;Microsoft Office Word、Excel 及 PowerPoint 2007 檔案格式相容性套件&lt;/a&gt;使用，可以讓您開啟以下列格式儲存的 Word 文件：&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Word 文件 (*.docx) &lt;/li&gt;      &lt;li&gt;Word 啟用巨集的文件 (*.docm) &lt;/li&gt;      &lt;li&gt;RTF 格式 (.rtf) &lt;/li&gt;      &lt;li&gt;文字檔案 (.txt) &lt;/li&gt;      &lt;li&gt;網頁格式 (.htm, .html, .mht, .mhtml) &lt;/li&gt;      &lt;li&gt;WordPerfect 5.x (.wpd) &lt;/li&gt;      &lt;li&gt;WordPerfect 6.x (.doc, .wpd) &lt;/li&gt;      &lt;li&gt;Works 6.0 (.wps) &lt;/li&gt;      &lt;li&gt;Works 7.0 (.wps) &lt;/li&gt;      &lt;li&gt;XML (.xml)&lt;/li&gt;   &lt;/ul&gt;    &lt;br /&gt;您可以使用 Word Viewer 和相容性套件來檢視和列印文件內容，以及將文件內容複製到另一個程式。不過，您無法編輯已開啟的文件、儲存文件或建立新文件。此下載取代了 Word Viewer 2003 和先前所有的 Word Viewer 版本。     &lt;br /&gt;注意：如果您同意接受 Word Viewer 的其他授權條款，您可以獨立散佈這個檢視工具，而不需配合以 Microsoft Office 建立的文件。     &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=1CD6ACF9-CE06-4E1C-8DCF-F33F669DBC3A&amp;amp;displaylang=en" target="_blank"&gt;Excel Viewer&lt;/a&gt;      &lt;br /&gt;即使您沒有安裝 Excel，也可以使用 Excel Viewer 開啟、檢視，和列印 Excel 活頁簿。 您也可以將 Excel Viewer 中的資料複製到其他程式中。不過，您無法編輯資料、儲存活頁簿，或是建立新活頁簿。此下載取代了 Excel Viewer 97 和先前所有的 Excel Viewer 版本。(可觀看Excel 2007的檔案)&lt;/li&gt;    &lt;li&gt;     &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-6710055556220678654?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/6710055556220678654/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=6710055556220678654&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/6710055556220678654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/6710055556220678654'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/07/ms-office-viewer-free.html' title='MS Office Viewer (free)'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-8710820780796259684</id><published>2009-07-08T11:46:00.001+08:00</published><updated>2009-07-08T11:46:17.528+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft C# 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET Framework'/><title type='text'>window control如何binding自訂類別中的屬性？</title><content type='html'>&lt;p&gt;在.net 2.0中，它提供了一個類別：binding class，用來binding控制項與類別之間的值。一般的寫法：&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;ClassA a = &lt;span class="kwrd"&gt;new&lt;/span&gt; ClassA();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;Binding bind_ClassA = &lt;span class="kwrd"&gt;new&lt;/span&gt; Binding(&lt;span class="str"&gt;&amp;quot;Text&amp;quot;&lt;/span&gt;,a,&lt;span class="str"&gt;&amp;quot;p1&amp;quot;&lt;/span&gt;,DataSourceUpdateMode.OnValidation, &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;ultraTextEditor1.DataBindings.Add(bind_ClassA);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;上述的程式碼，它的效果只會發生在一種情況 - 當使用者變更ultraTextEditor1中的值時，會同步更新至 a物件的p1屬性上。但是，當a.p1的值改變時，它是不會同步至ultraTextEditor1 控制項上的。&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;那我們要如何達到，當a.p1屬性變更時同步更新在畫面上的ultraTextEditor1上呢？&lt;br /&gt;  &lt;br /&gt;首先，ClassA必須實作INotifyProperptyChanged介面，使得a.p1值改變時會發出一個propertychanged 事件，當畫面的程式碼收到這個事件時，再將改變後的值同步至ultraTextEditor1上。詳細程式碼，如下：&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;ClassA.cs&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Text;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.ComponentModel;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;namespace &lt;/span&gt;Binding自訂屬性&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ClassA &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;INotifyPropertyChanged&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: blue"&gt;private string &lt;/span&gt;m_p1;&lt;br /&gt;&lt;br /&gt;        [&lt;span style="color: #2b91af"&gt;Browsable&lt;/span&gt;(&lt;span style="color: blue"&gt;true&lt;/span&gt;)]&lt;br /&gt;        [&lt;span style="color: #2b91af"&gt;Bindable&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;BindableSupport&lt;/span&gt;.Yes, &lt;span style="color: #2b91af"&gt;BindingDirection&lt;/span&gt;.TwoWay)]&lt;br /&gt;        [&lt;span style="color: #2b91af"&gt;Category&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;自訂屬性&amp;quot;&lt;/span&gt;)] &lt;br /&gt;        &lt;span style="color: blue"&gt;public string &lt;/span&gt;p1&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;m_p1; }&lt;br /&gt;            &lt;span style="color: blue"&gt;set &lt;br /&gt;            &lt;/span&gt;{&lt;br /&gt;                &lt;span style="color: blue"&gt;if &lt;/span&gt;(m_p1 != &lt;span style="color: blue"&gt;value&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    m_p1 = &lt;span style="color: blue"&gt;value&lt;/span&gt;;&lt;br /&gt;                    NotifyPropertyChanged(&lt;span style="color: #a31515"&gt;&amp;quot;p1&amp;quot;&lt;/span&gt;);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;#region &lt;/span&gt;INotifyPropertyChanged Members&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public event &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PropertyChangedEventHandler &lt;/span&gt;PropertyChanged;&lt;br /&gt;        &lt;span style="color: blue"&gt;private void &lt;/span&gt;NotifyPropertyChanged(&lt;span style="color: #2b91af"&gt;String &lt;/span&gt;info)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;if &lt;/span&gt;(PropertyChanged != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                PropertyChanged(&lt;span style="color: blue"&gt;this&lt;/span&gt;, &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PropertyChangedEventArgs&lt;/span&gt;(info));&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;#endregion&lt;br /&gt;    &lt;/span&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Form1.cs&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.ComponentModel;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Data;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Drawing;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Text;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;namespace &lt;/span&gt;Binding自訂屬性&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;public partial class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Form1 &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;Form&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: blue"&gt;public &lt;/span&gt;Form1()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;ClassA &lt;/span&gt;a = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ClassA&lt;/span&gt;();&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;Binding &lt;/span&gt;bind_ClassA = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: blue"&gt;private void &lt;/span&gt;Form1_Load(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            a.PropertyChanged += &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PropertyChangedEventHandler&lt;/span&gt;(a_PropertyChanged);&lt;br /&gt;            bind_ClassA = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Binding&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Text&amp;quot;&lt;/span&gt;,a,&lt;span style="color: #a31515"&gt;&amp;quot;p1&amp;quot;&lt;/span&gt;,&lt;span style="color: blue"&gt;false&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;DataSourceUpdateMode&lt;/span&gt;.OnValidation,&lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty);&lt;br /&gt;            ultraTextEditor1.DataBindings.Add(bind_ClassA);&lt;br /&gt;            bind_ClassA.ControlUpdateMode = &lt;span style="color: #2b91af"&gt;ControlUpdateMode&lt;/span&gt;.OnPropertyChanged;&lt;br /&gt;            a.p1 = &lt;span style="color: #a31515"&gt;&amp;quot;ccc&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;void &lt;/span&gt;a_PropertyChanged(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;PropertyChangedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            bind_ClassA.ReadValue();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;private void &lt;/span&gt;ultraButton1_Click(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: green"&gt;//bind_ClassA.BindingManagerBase.SuspendBinding();&lt;br /&gt;            &lt;/span&gt;a.p1 = System.&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Now.ToLongTimeString();&lt;br /&gt;            &lt;span style="color: green"&gt;//bind_ClassA.BindingManagerBase.ResumeBinding();&lt;br /&gt;            //bind_ClassA.ReadValue();&lt;br /&gt;               &lt;br /&gt;        &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;private void &lt;/span&gt;ultraButton2_Click(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;MessageBox&lt;/span&gt;.Show(&lt;span style="color: #a31515"&gt;&amp;quot;p1 = &amp;quot; &lt;/span&gt;+ a.p1);&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;MessageBox&lt;/span&gt;.Show(&lt;span style="color: #a31515"&gt;&amp;quot;TextBox.Value = &amp;quot; &lt;/span&gt;+ ultraTextEditor1.Value.ToString());&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;MessageBox&lt;/span&gt;.Show(&lt;span style="color: #a31515"&gt;&amp;quot;TextBox.Text = &amp;quot; &lt;/span&gt;+ ultraTextEditor1.Text.ToString());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-8710820780796259684?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/8710820780796259684/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=8710820780796259684&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/8710820780796259684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/8710820780796259684'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/07/window-controlbinding.html' title='window control如何binding自訂類別中的屬性？'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-5880146260226462800</id><published>2009-07-08T11:32:00.000+08:00</published><updated>2009-07-08T11:31:47.574+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Remoting'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft C# 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Smart Client + ClickOnce'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET Framework'/><title type='text'>DataSet.RemotingFormat屬性可以改善效能</title><content type='html'>&lt;div&gt;在.NET 2.0建製N-Tier的系統時，一般的作法都是傳遞DataSet。然而，DataSet本身是一個怪獸級的Framework，再經由序列化變成XML時，傳遞的Size都是非常恐佈的，也讓系統本身的效能不彰。&lt;/div&gt;  &lt;div&gt;在微軟的建議中，我們可以改變DataSet預設的序列化格式，讓序列化的資料不是XML而是以Binary的格式進行傳遞，這樣可以改善部份的效能。&lt;/div&gt;  &lt;div&gt;那究竟改善多少呢？可以由下列兩篇文章看出一些端堄：&lt;/div&gt;  &lt;div&gt;   &lt;br /&gt;&lt;/div&gt; &lt;a href="http://www.codeproject.com/KB/database/CompressedDataSets.aspx?display=PrintAll&amp;amp;fid=188889&amp;amp;df=90&amp;amp;mpp=25&amp;amp;noise=3&amp;amp;sort=Position&amp;amp;view=Quick&amp;amp;select=1825203"&gt;http://www.codeproject.com/KB/database/CompressedDataSets.aspx?display=PrintAll&amp;amp;fid=188889&amp;amp;df=90&amp;amp;mpp=25&amp;amp;noise=3&amp;amp;sort=Position&amp;amp;view=Quick&amp;amp;select=1825203&lt;/a&gt;  &lt;br /&gt;&lt;a href="http://bethmassi.blogspot.com/2006/01/binary-serialization-of-datasets-in.html"&gt;http://bethmassi.blogspot.com/2006/01/binary-serialization-of-datasets-in.html&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-5880146260226462800?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/5880146260226462800/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=5880146260226462800&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/5880146260226462800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/5880146260226462800'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/07/datasetremotingformat.html' title='DataSet.RemotingFormat屬性可以改善效能'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-513387799966367141</id><published>2009-07-08T11:29:00.000+08:00</published><updated>2009-07-08T11:29:49.028+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft SQL Server'/><title type='text'>清空SQL Server的快取</title><content type='html'>一般而言，不會有需要清除SQL Server Cache的問題。但是，在某些時刻它卻是一個必需的指令，例如：在測試performance時，需要前後狀況的比較。或是，在某些狀況下cache無法反應最新的資料狀況時，我們都會需要清除cache的動作，指令如下：  &lt;br /&gt;DBCC FREEPROCCACHE  &lt;br /&gt;會清空Procedure的最佳化的計劃，重新執行重新產生新的執行計劃  &lt;br /&gt;  &lt;br /&gt;DBCC DROPCLEANBUFFERS  &lt;br /&gt;會清空儲存在快取中的資料，而不需要重新啟動SQL Server  &lt;div class="blogger-post-footer"&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-513387799966367141?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/513387799966367141/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=513387799966367141&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/513387799966367141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/513387799966367141'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/07/sql-server.html' title='清空SQL Server的快取'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-1644333051506054040</id><published>2009-05-11T02:59:00.000+08:00</published><updated>2009-05-11T03:01:14.025+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft C# 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET Framework 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft SQL Server'/><title type='text'>產生SQL Server 2005/2008 資料庫物件的文件(CHM)</title><content type='html'>&lt;p&gt;之前為了產生資料庫物件的相關文件，費時費力。後來，使用Case Studio產生資料庫文件。到後來的Toad for SQL Server&amp;#160; / Toad Database Modeler。這些工具都有幾個問題，客製化不容易，文件也不甚美觀，只能產生RTF檔。&lt;/p&gt;  &lt;p&gt;最近，在CodeProject發現了一個好東西：&lt;a href="http://www.codeproject.com/KB/cs/SQLDoc.aspx" target="_blank"&gt;SQLDoc Sharp&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;它可以直接連結資料庫，並產生相關檔案及原始碼(包含Table, Trigger, Stored Procedure, UserDefineTypes及View…)，並且直接產生成CHM檔，方便歸檔也方便搜尋。最棒的是，還附上Source Code(當然不用錢，也是另外一個好處)。&lt;/p&gt;  &lt;p&gt;這個原始碼專案，我稍微看過，我把我的心得稍微歸類一下：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;這個原始碼專案，必須用Visual Studio 2008才能開啟。&lt;/li&gt;    &lt;li&gt;這個專案產生的執行檔，必須先安裝HTML Help workshop。並且必須安裝在預設目錄(C:\Program Files\HTML help workshop)&lt;/li&gt;    &lt;li&gt;執行檔所在的執行環境，必須事先安裝 SQL Server 2008 / SQL Server 2008 Express。因為專案中有參考到SQL Server 2008的部份元件。&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;font color="#ff0080"&gt;若無法在執行的該台電腦上安裝SQL Server 2008 (或Express Edition)。那請參考&amp;#160; Microsoft SQL Server 2008 Feature Pack(2008 年 8 月)。安裝其中的兩項元件：&lt;/font&gt;&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;&lt;font color="#ff0080"&gt;Microsoft SQL Server 2008 管理物件            &lt;br /&gt;SQL Server 管理物件 (SMO) 是一種 .NET Framework 物件模型，可讓軟體開發人員建立用戶端應用程式來管理 SQL Server 物件與服務。這個物件模型將適用於 SQL Server 2000、SQL Server 2005 與 SQL Server 2008。&lt;/font&gt;&lt;/li&gt;        &lt;li&gt;&lt;font color="#ff0080"&gt;Microsoft SQL Server 系統 CLR 類型            &lt;br /&gt;SQL Server 系統 CLR 類型封裝包含一些元件，可實作 SQL Server 2008 中的新 geometry、geography 和 hierarchyid 類型。這個元件可以與伺服器分開安裝，以便讓用戶端應用程式在伺服器外部使用這些類型。            &lt;br /&gt;注意：本元件也需要 Windows Installer 4.5。            &lt;br /&gt;(&lt;/font&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=5A58B56F-60B6-4412-95B9-54D056D6F9F4&amp;amp;displaylang=en)"&gt;&lt;font color="#ff0080"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=5A58B56F-60B6-4412-95B9-54D056D6F9F4&amp;amp;displaylang=en)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-1644333051506054040?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/1644333051506054040/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=1644333051506054040&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/1644333051506054040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/1644333051506054040'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/05/sql-server-20052008-chm.html' title='產生SQL Server 2005/2008 資料庫物件的文件(CHM)'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-2905126582989719231</id><published>2009-05-11T01:56:00.000+08:00</published><updated>2009-05-11T01:59:32.701+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><title type='text'>Microsoft SQL Server 2008 Feature Pack，2008 年 8 月</title><content type='html'>&lt;p&gt;這是一項獨立安裝封裝集合，這些封裝可以增加 SQL Server 2008 的額外價值。&lt;/p&gt;  &lt;p&gt;每項封裝都會指出它所適用的對象，如下所示：&lt;/p&gt;  &lt;ul&gt;&lt;b&gt;客戶：&lt;/b&gt;想要安裝這項封裝來增加授權功能 (例如：互通性) 的個人。    &lt;br /&gt;&lt;b&gt;夥伴：&lt;/b&gt;ISV 可能想要將這個封裝當做可轉散發元件來轉送，以做為其應用程式的一部分。    &lt;br /&gt;&lt;b&gt;開發人員：&lt;/b&gt;程式設計人員可能想要安裝這項封裝來支援應用程式開發。&lt;/ul&gt;  &lt;p&gt;&lt;b&gt;注意：&lt;/b&gt;若要另存一份授權條款，在接受條款之前，請先將條款複製並貼至文字處理程式中，再列印或儲存至您偏好的目錄即可。 &lt;a name="ASOLEDB"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Microsoft SQL Server 2008 Analysis Services 10.0 OLE DB 提供者&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft SQL Server 2005 回溯相容性元件&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft SQL Server 2008 命令列公用程式&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;SQL Server Compact 3.5 SP1&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;適用於 Microsoft Office 2007 的 Microsoft SQL Server 2008 資料採礦增益集&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft Core XML Services (MSXML) 6.0&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft SQL Server 2005 JDBC 驅動程式 1.2&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft SQL Server 2008 管理物件&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft OLEDB Provider for DB2&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;SQL Server 遠端 Blob 存放區&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft SQL Server 2008 Native Client&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft SQL Server 2008 原則&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;適用於 Microsoft SharePoint 技術的 Microsoft SQL Server 2008 Reporting Services 增益集&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft SQL Server 系統 CLR 類型&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft Sync Framework&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft SQL Server 2008 Upgrade Advisor&lt;/b&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;詳細下載及說明網址：&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&amp;amp;FamilyID=c6c3e9ef-ba29-4a43-8d69-a2bed18fe73c" target="_blank"&gt;Microsoft SQL Server 2008 Feature Pack，2008 年 8 月&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-2905126582989719231?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/2905126582989719231/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=2905126582989719231&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/2905126582989719231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/2905126582989719231'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/05/microsoft-sql-server-2008-feature.html' title='Microsoft SQL Server 2008 Feature Pack，2008 年 8 月'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-4885312194480043462</id><published>2009-01-10T17:59:00.000+08:00</published><updated>2009-01-10T18:00:31.760+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft C# 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET Framework'/><title type='text'>在ASP.NET 2.0中如何處理UI 繼承的問題？</title><content type='html'>&lt;p&gt;我想設計一個有繼承功能的WebForm，類似Window Form的作法。但是，ASP.NET的WebForm，其實是無法作可視化的Web UI繼承，所以只有Code-Behind的程式碼是可以繼承的。&lt;/p&gt;  &lt;p&gt;概念如下：   &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_BiAIh45tOHE/SWhxumJgxMI/AAAAAAAACWk/hbQh70W7s0Q/s1600-h/image%5B2%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="187" alt="image" src="http://lh4.ggpht.com/_BiAIh45tOHE/SWhxvV9CRqI/AAAAAAAACWo/BPsMI2QAJzA/image_thumb.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;所以，我們先在網站專案中新增一個Web頁面：Base_swWebForm.aspx。再增加一張網頁：TestPage.aspx。   &lt;br /&gt;由上圖的結構，我們可以知道BaseForm是Base_swWebForm.aspx。故在Base_swWebForm.aspx.cs中撰寫相關程式碼。而TestPage.aspx.cs 則是撰擇繼承Base_swWebForm.aspx，再進行進一步的程式碼撰寫。&lt;/p&gt;  &lt;p&gt;程式碼如下：   &lt;br /&gt;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c3cd441a-22a3-4d45-ac0c-681e77baaa35" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;WebForm Code-behind 的程式碼：&lt;a href="http://www.example.com/Base_swWebForm" rel="tag"&gt;Base_swWebForm&lt;/a&gt;&lt;/div&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Data;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Configuration;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Collections;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web.Security;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web.UI;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web.UI.WebControls;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web.UI.WebControls.WebParts;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web.UI.HtmlControls;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;public partial class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Base_swWebForm &lt;/span&gt;: System.Web.UI.&lt;span style="color: #2b91af"&gt;Page&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;protected void &lt;/span&gt;Page_Load(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;ScriptManager&lt;/span&gt;.RegisterClientScriptInclude(&lt;span style="color: blue"&gt;this&lt;/span&gt;, &lt;span style="color: blue"&gt;this&lt;/span&gt;.GetType(), &lt;span style="color: #a31515"&gt;&amp;quot;common&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;../Scripts/common.js&amp;quot;&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: gray"&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;    /// &lt;/span&gt;&lt;span style="color: green"&gt;取得客戶端真實IP Address&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;    /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: blue"&gt;protected string &lt;/span&gt;GetClientIP()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;string &lt;/span&gt;ip = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color: blue"&gt;if &lt;/span&gt;(&lt;span style="color: blue"&gt;string&lt;/span&gt;.IsNullOrEmpty(Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;]) || Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].ToUpper().IndexOf(&lt;span style="color: #a31515"&gt;&amp;quot;UNKNOWN&amp;quot;&lt;/span&gt;) &amp;gt; 0)&lt;br /&gt;        {&lt;br /&gt;            ip = Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;REMOTE_ADDR&amp;quot;&lt;/span&gt;];&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: blue"&gt;else if &lt;/span&gt;(Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].IndexOf(&lt;span style="color: #a31515"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;) &amp;gt; 0)&lt;br /&gt;        {&lt;br /&gt;            ip = Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].Substring(1, Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].IndexOf(&lt;span style="color: #a31515"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;) - 1);&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: blue"&gt;else if &lt;/span&gt;(Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].IndexOf(&lt;span style="color: #a31515"&gt;&amp;quot;;&amp;quot;&lt;/span&gt;) &amp;gt; 0)&lt;br /&gt;        {&lt;br /&gt;            ip = Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].Substring(1, Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].IndexOf(&lt;span style="color: #a31515"&gt;&amp;quot;;&amp;quot;&lt;/span&gt;) - 1);&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: blue"&gt;else&lt;br /&gt;        &lt;/span&gt;{&lt;br /&gt;            ip = Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;];&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: green"&gt;//return ip.Replace(' ', string.Empty).ToString();&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;return &lt;/span&gt;ip.Trim().ToString();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: gray"&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;    /// &lt;/span&gt;&lt;span style="color: green"&gt;顯示MessageBox&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;    /// &amp;lt;param name=&amp;quot;msg&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;訊息&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: blue"&gt;protected void &lt;/span&gt;ShowMessage(&lt;span style="color: blue"&gt;string &lt;/span&gt;msg)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;this&lt;/span&gt;.Response.Write(&lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;Script language='JavaScript'&amp;gt;\nwindow.alert('&amp;quot; &lt;/span&gt;+ msg + &lt;span style="color: #a31515"&gt;&amp;quot;');\n&amp;lt;/Script&amp;gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;在Base_swWebForm.aspx.cs的程式碼做了三件事：&lt;br /&gt;1. 註冊網頁上會用到的共用Script File。&lt;br /&gt;2. 提供取得Client IP的Method：GetClientIP();&lt;br /&gt;3. 提供類似MessageBox.Show的功能：ShowMessage(msg);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4d5f4e65-d06e-46d1-901d-b585891365ea" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;WebForm Code-behind 的程式碼：&lt;a href="http://www.example.com/TestPage" rel="tag"&gt;TestPage&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Data;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Configuration;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Collections;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web.Security;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web.UI;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web.UI.WebControls;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web.UI.WebControls.WebParts;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web.UI.HtmlControls;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Threading;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.IO;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;public partial class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Base_TestPage &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;Base_swWebForm &lt;/span&gt;&lt;span style="color: green"&gt;//System.Web.UI.Page Base_TestPage&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;protected void &lt;/span&gt;Button2_Click(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;    {&lt;br /&gt;        ShowMessage(GetClientIP());&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;TestPage.aspx.cs，則因為是測試網頁，所以程式碼很簡單，只有一個Button2而已。而在Button2_Click時，呼叫Base_swWebForm上原有提供的methods，用來確定繼承是成功的。&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;此時，你會發現程式是錯誤的。因為沒有辦法繼承Base_swWebForm。你必須將Base_swWebForm.aspx.cs這個檔案移動到Web專案的App_Code的目錄下，而原有的Base_swWebForm.aspx這個檔案，因為ASP.NET 2.0 原本就達到頁面可視繼承，就直接刪除吧！！&lt;br /&gt;此時，你會發現程式碼就會正確，也達到Code-behind的繼承，而每個繼承的頁面再也不必寫, Include common.js及GetClientIP(), ShowMessage 這些功能。&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-4885312194480043462?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/4885312194480043462/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=4885312194480043462&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/4885312194480043462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/4885312194480043462'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/01/aspnet-20ui.html' title='在ASP.NET 2.0中如何處理UI 繼承的問題？'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-8370203991063585188</id><published>2009-01-10T13:22:00.000+08:00</published><updated>2009-01-10T13:23:25.326+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS 7'/><title type='text'>當TextBox Control 放入AJAX 的UpdatePanel後，無法正常觸發TextChanged事件？</title><content type='html'>&lt;p&gt;因為 ASP.NET 2.0 既有的 Vlidators 有實作用戶端程式碼，會與 ASP.NET AJAX 的 UpdatePanel 不相容，微軟已經計劃會透過 Windows Update / Microsoft Updaet 更新 System.Web。 &lt;/p&gt;  &lt;p&gt;目前的解法：    &lt;br /&gt;1. 請下載 新版的 Validators(&lt;a href="http://blogs.msdn.com/mattgi/attachment/1516974.ashx)"&gt;http://blogs.msdn.com/mattgi/attachment/1516974.ashx)&lt;/a&gt;    &lt;br /&gt;2. 解開壓縮檔，將 Validators.dll 複製到網頁應用程式的 bin 資料夾中     &lt;br /&gt;3. 開啟 Web.config，在 &amp;lt;system.web&amp;gt; 區段下的 &amp;lt;pages&amp;gt; 標籤中，加入如下的 &amp;lt;tagMapping&amp;gt; 設定：     &lt;br /&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;pages&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tagMapping&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;                &amp;lt;!--&lt;br /&gt;          &lt;/span&gt;&lt;span style="color: green"&gt;ASP.NET &amp;amp; UpdatePanel搭配後發現原本的ASP.NET Validator有bug&lt;br /&gt;          故需更新Bin\Validator.dll元件，用來取代原始的ASP.NET的Validator.dll&lt;br /&gt;          請參考：&lt;br /&gt;          http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=1529953&amp;amp;SiteID=14&amp;amp;pageid=0&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;--&amp;gt;&lt;br /&gt;                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;tagType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.UI.WebControls.CompareValidator&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;mappedTagType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Sample.Web.UI.Compatibility.CompareValidator, Validators, Version=1.0.0.0&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;br /&gt;                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;tagType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.UI.WebControls.CustomValidator&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;mappedTagType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Sample.Web.UI.Compatibility.CustomValidator, Validators, Version=1.0.0.0&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;br /&gt;                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;tagType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.UI.WebControls.RangeValidator&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;mappedTagType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Sample.Web.UI.Compatibility.RangeValidator, Validators, Version=1.0.0.0&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;br /&gt;                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;tagType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.UI.WebControls.RegularExpressionValidator&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;mappedTagType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Sample.Web.UI.Compatibility.RegularExpressionValidator, Validators, Version=1.0.0.0&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;br /&gt;                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;tagType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.UI.WebControls.RequiredFieldValidator&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;mappedTagType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Sample.Web.UI.Compatibility.RequiredFieldValidator, Validators, Version=1.0.0.0&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;br /&gt;                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;tagType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.UI.WebControls.ValidationSummary&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;mappedTagType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Sample.Web.UI.Compatibility.ValidationSummary, Validators, Version=1.0.0.0&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;br /&gt;            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tagMapping&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;pages&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-8370203991063585188?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/8370203991063585188/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=8370203991063585188&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/8370203991063585188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/8370203991063585188'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/01/textbox-control-ajax.html' title='當TextBox Control 放入AJAX 的UpdatePanel後，無法正常觸發TextChanged事件？'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-196324004993668341</id><published>2009-01-10T13:20:00.001+08:00</published><updated>2009-01-10T13:20:59.788+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft C# 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 2.0'/><title type='text'>在ASP.NET上如何取得真實的IP？</title><content type='html'>&lt;p&gt;在ASP.NET上，通常會使用    &lt;br /&gt;Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;REMOTE_ADDR&amp;quot;&lt;/span&gt;];    &lt;br /&gt;來取得用戶端的IP。&lt;/p&gt;  &lt;p&gt;但是有可能會遇到一個問題，當用戶端是透過代理伺服器連入時，則IP會變成是代理伺服器的，而並非是真正的用戶端IP。所以，我們必須使用另外的方式取得用戶端的IP   &lt;br /&gt;Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;];&lt;/p&gt;  &lt;p&gt;完整的程式碼如下：   &lt;br /&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// &lt;/span&gt;&lt;span style="color: green"&gt;取得客戶端真實IP Address&lt;br /&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;protected string &lt;/span&gt;GetClientIP()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;string &lt;/span&gt;ip = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: blue"&gt;if &lt;/span&gt;(Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].ToString()==&lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty || Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].ToUpper().IndexOf(&lt;span style="color: #a31515"&gt;&amp;quot;UNKNOWN&amp;quot;&lt;/span&gt;) &amp;gt; 0)&lt;br /&gt;    {&lt;br /&gt;        ip = Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;REMOTE_ADDR&amp;quot;&lt;/span&gt;];&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;else if &lt;/span&gt;(Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].IndexOf(&lt;span style="color: #a31515"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;) &amp;gt; 0)&lt;br /&gt;    {&lt;br /&gt;        ip = Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].Substring(1, Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].IndexOf(&lt;span style="color: #a31515"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;) - 1);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;else if &lt;/span&gt;(Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].IndexOf(&lt;span style="color: #a31515"&gt;&amp;quot;;&amp;quot;&lt;/span&gt;) &amp;gt; 0)&lt;br /&gt;    {&lt;br /&gt;        ip = Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].Substring(1, Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;].IndexOf(&lt;span style="color: #a31515"&gt;&amp;quot;;&amp;quot;&lt;/span&gt;) - 1);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: blue"&gt;else&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        ip = Request.ServerVariables[&lt;span style="color: #a31515"&gt;&amp;quot;HTTP_X_FORWARDED_FOR&amp;quot;&lt;/span&gt;];&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue"&gt;return &lt;/span&gt;ip.Replace(&lt;span style="color: #a31515"&gt;' '&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-196324004993668341?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/196324004993668341/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=196324004993668341&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/196324004993668341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/196324004993668341'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/01/aspnetip.html' title='在ASP.NET上如何取得真實的IP？'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-1952785399810673485</id><published>2009-01-10T01:37:00.000+08:00</published><updated>2009-01-10T01:40:07.176+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft C# 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='其他'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET Framework'/><title type='text'>回覆：自訂控制項的問題…</title><content type='html'>&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:656385d1-3e15-4d38-8357-76f6d7713fc0" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;提問者 的標籤：&lt;a href="http://www.example.com/%e5%95%8f%e9%a1%8c%ef%bc%9a" rel="tag"&gt;問題：&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;您好，看了您的Blog，覺得您應該是資深的，很熟悉C＃的專業程式開發者   &lt;br /&gt;小弟最近在開發程式時，有需要建立控制項的需求，然而不知道這樣的作法是否正確    &lt;br /&gt;我先建立專案-「Windows Form控制項程式庫」，然後在UserControl上面放置我想要用的元件，    &lt;br /&gt;可能放了PictureBox或是TextBox與Button    &lt;br /&gt;因為只是簡單的測試，所以隨便定了兩個 Set Method就好了    &lt;br /&gt;然後把名稱改為MyTestCtrl，編譯，會在bin目錄下產生一個dll    &lt;br /&gt;接下來開另外一個專案MyWork，在工具列的地方以滑鼠右鍵開Menu，「選擇項目」    &lt;br /&gt;然後在Tab「.NET Framework元件」內點選「瀏覽」按鈕，選到剛剛那個Project內所編譯出來的dll檔    &lt;br /&gt;我的工具箱就會多一個圖示，是MyTestCtrl，可以像一般的控制項一般拉來用了    &lt;br /&gt;請問：    &lt;br /&gt;1.我這樣的開發方式，是正確的嗎？&lt;/p&gt;  &lt;p&gt;&lt;font face="微軟正黑體" color="#0000a0"&gt;一般的開發方式會是新增一個方案，其中包含了兩個專案：開發自訂控制項專案 + 測試自訂控制項的專案。而在測試自訂控制項的專案中，用專案參考的方式把開發專案包含進來，你的專案便可以一面開發、一面進行測試。     &lt;br /&gt;所謂專案參考，是在Solution Explorer中先點選「測試開發專案」的Reference目錄，按下滑鼠右鍵，選擇「Add Reference」。在出現的Reference Diagram上把Tab切到「專案」這個Tab，把「開發自訂控制項」的專案加入即可。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="微軟正黑體" color="#0000a0"&gt;&lt;/font&gt;    &lt;br /&gt;2.這樣我的MyWork專案在編譯出給人家用時，都要把MyTestCtrl.dll一併發佈，不然用起來會有問題，那如果我有很多這樣的自訂控制項，不就要一堆dll跟軟體放在同一目錄下才行囉？&lt;/p&gt;  &lt;p&gt;&lt;font face="微軟正黑體" color="#0000a0"&gt;不一定要放在同一個目錄。因為別人的使用方式會用「Dll」參考，其步驟就是你原本使用的方式。而這種Dll Reference的方式，你可以在加入參考後，在Solution Explorer中該專案的Reference Folder中發現加入Reference的Dll資訊，如下圖所示：     &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_BiAIh45tOHE/SWeLZQNQeBI/AAAAAAAACWA/qgWE-wTUpO8/s1600-h/image%5B2%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://lh4.ggpht.com/_BiAIh45tOHE/SWeLbV_nZXI/AAAAAAAACWE/zkegHxlPFJw/image_thumb.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;接下來切換到Properties視窗，裏面有一個很重要的屬性：Copy Local      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_BiAIh45tOHE/SWeLdOnWosI/AAAAAAAACWI/74drc7xQVRg/s1600-h/image%5B5%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://lh5.ggpht.com/_BiAIh45tOHE/SWeLea30VoI/AAAAAAAACWM/bI2doJxq8FQ/image_thumb%5B1%5D.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;一般而言，Dll Reference 預設是True，而GAC Reference則會是False。這個屬性會決定是不是將Dll複製到該專案的目錄下，你可以自行決定作法。而我的作法會把Release出來給PR用的Dll，都統一放置在一個固定的開發目錄，而不希望在放在每個專案下，因為第一：每一個專案的Reference 都是一次複製，而散落在每個專案時，也不好管理他們究竟Reference的是我發出來的哪一個版本。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="微軟正黑體" color="#0000a0"&gt;&lt;/font&gt;    &lt;br /&gt;3.做出來的自訂控制項，在工具箱內不會像一般的控制項有自己的圖示耶，都長的一個樣，齒輪，這個要怎麼更改呢？呢？&lt;/p&gt;  &lt;p&gt;&lt;font face="微軟正黑體" color="#0000a0"&gt;至於工具箱圖形這件事，我並沒有實作過！！但是，就我印象中在VS2005上似乎是有一點問題。我找了一些資料，你可以實作看看，看起來是可行的     &lt;br /&gt;&lt;a href="http://topic.csdn.net/t/20050222/20/3799032.html" target="_blank"&gt;如何为自定义的控件在工具箱中自定义个性化的图标?&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="微軟正黑體" color="#0000a0"&gt;&lt;/font&gt;    &lt;br /&gt;還有如果我的控制項，我有個TestValue成員，int，我希望可以在屬性視窗修改，而不是只能在Code修改，該怎麼作呢？&lt;/p&gt;  &lt;p&gt;&lt;font face="微軟正黑體" color="#0000a0"&gt;自訂控制項的屬性預設都會出現在Properties視窗中，如下圖所示：&lt;/font&gt;    &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_BiAIh45tOHE/SWeLfaGrHEI/AAAAAAAACWQ/U9RN--TC5_I/s1600-h/image%5B11%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="238" alt="image" src="http://lh3.ggpht.com/_BiAIh45tOHE/SWeLhMTXpLI/AAAAAAAACWU/79JJ-wh-RPw/image_thumb%5B3%5D.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;font face="微軟正黑體" color="#0000a0"&gt;你也可以用進階一點的方式，在該屬性用設定meta-data的方式來處理&lt;/font&gt;&lt;/p&gt;  &lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;Browsable&lt;/span&gt;(&lt;span style="color: blue"&gt;true&lt;/span&gt;)]&lt;br /&gt;[&lt;span style="color: #2b91af"&gt;Description&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;個人登入資訊&amp;quot;&lt;/span&gt;)]&lt;br /&gt;[&lt;span style="color: #2b91af"&gt;Category&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;自訂控制項之自訂屬性群&amp;quot;&lt;/span&gt;)]&lt;br /&gt;&lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;UserInfo &lt;/span&gt;PersonalData&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return this&lt;/span&gt;.m_userinfo; }&lt;br /&gt;    &lt;span style="color: blue"&gt;set &lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: blue"&gt;this&lt;/span&gt;.m_userinfo = &lt;span style="color: blue"&gt;value&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;if &lt;/span&gt;(bindUserInfo != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;br /&gt;            bindUserInfo.ResetBindings(&lt;span style="color: blue"&gt;false&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="微軟正黑體" color="#0000a0"&gt;結果，你就會發現屬性會被歸類在「自訂控制項之自訂屬性群」且會有加上描述：&lt;/font&gt;&lt;a href="http://lh3.ggpht.com/_BiAIh45tOHE/SWeLh5dcJ0I/AAAAAAAACWY/5E8AYLcOz20/s1600-h/image%5B8%5D.png"&gt;&lt;br /&gt;    &lt;br /&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/_BiAIh45tOHE/SWeLjI90r8I/AAAAAAAACWc/kfXlbdnszR8/s1600-h/image%5B14%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="238" alt="image" src="http://lh5.ggpht.com/_BiAIh45tOHE/SWeLk-72poI/AAAAAAAACWg/U2rRF-3eotE/image_thumb%5B4%5D.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-1952785399810673485?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/1952785399810673485/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=1952785399810673485&amp;isPopup=true' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/1952785399810673485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/1952785399810673485'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/01/blog-post.html' title='回覆：自訂控制項的問題…'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-8203850370013970039</id><published>2009-01-05T17:24:00.000+08:00</published><updated>2009-01-05T17:26:26.054+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Update'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><title type='text'>遇到 Windows Update 或 Microsoft Update 無法更新時該怎麼辦 ?</title><content type='html'>&lt;p&gt;Windows Update 與 Microsoft Update 是 Microsoft 提供使用者線上更新程式的管道，可以自動連線到 Microsoft 網站以隨時下載最新的更新程式，但是有時候也會因為許多客觀因素而導致更新無法順利完成，例如網際網路頻寬不穩定、有其他軟體或應用程式佔用網路頻寬 (例如防毒軟體正在更新或下載病毒碼)，或是網際網路設備 (例如網路卡、交換器) 發生故障等等，都有可能導致 Windows Update 或 Microsoft Office 無法更新或更新失敗等問題。如果網際網路連線頻寬不穩定的問題已經解決，且網路設備故障的問題也已經排除或設備已經更換，但依舊還是發生 Windows Update 或 Microsoft Update 無法正常運作的狀況，就表示先前更新程式的過程被中斷，導致自動更新程式無法正常運作。&lt;/p&gt;  &lt;p&gt;詳細解決方法，請至 &lt;a href="http://support.microsoft.com/" target="_blank"&gt;微軟技術支援服務&lt;/a&gt;(&lt;a href="http://support.microsoft.com/kb/961054/zh-tw" target="_blank"&gt;961054&lt;/a&gt;) 網站&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-8203850370013970039?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/8203850370013970039/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=8203850370013970039&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/8203850370013970039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/8203850370013970039'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/01/windows-update-microsoft-update.html' title='遇到 Windows Update 或 Microsoft Update 無法更新時該怎麼辦 ?'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-2419125292120637378</id><published>2009-01-05T17:22:00.000+08:00</published><updated>2009-01-05T17:24:37.821+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><title type='text'>安裝 Windows XP Service Pack 3 後，無法啟動 Outlook Express</title><content type='html'>&lt;p&gt;Windows XP Service Pack 3 (SP3) 是 Microsoft 針對 Windows XP 作業系統推出的最新修補程式，不但可以改善作業系統的執行效率 (例如 MMC 3.0、WPA2 等)，還提供許多新功能 (例如 NAP、Windows 產品啟用等)，所以一推出後，立即成為最熱門的下載軟體。但是，有些使用者因為電腦中安裝許多各種不同的應用程式與軟體，因此在安裝 Windows XP SP3 之後，可能會遇到無法啟動 Outlook Express 的問題…&lt;/p&gt;  &lt;p&gt;詳細解決方法，請至 &lt;a href="http://support.microsoft.com/" target="_blank"&gt;微軟技術支援服務&lt;/a&gt;(&lt;a href="http://support.microsoft.com/kb/960640/zh-tw" target="_blank"&gt;960640&lt;/a&gt;) 網站&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-2419125292120637378?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/2419125292120637378/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=2419125292120637378&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/2419125292120637378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/2419125292120637378'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2009/01/windows-xp-service-pack-3-outlook.html' title='安裝 Windows XP Service Pack 3 後，無法啟動 Outlook Express'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-4314093935048129268</id><published>2008-12-22T03:22:00.000+08:00</published><updated>2008-12-22T03:25:15.136+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft C# 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Globalization'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET Framework'/><title type='text'>.NET 應用系統全球化(三)</title><content type='html'>&lt;p&gt;假設各位的系統，已經利用上一篇提到的CultureInfo搭配程式碼，處理字串、數字、日期…，讓系統符合國際化(也就是說，不會因為不同文化特性需要進行系統的修改及客製化)。此時，我們來了解一下，當地化該怎麼處理？基本上有兩種作法：&lt;/p&gt;  &lt;p&gt;其一：&lt;/p&gt;  &lt;p&gt;稍微對於.NET及Visual Studio有了解的人，都知道.NET內建支援多國語系(這也就是我說的當地化的部份)。該怎麼做呢？開啟專案後，在每一個window form 畫面的Properties Box裏，你可以看到兩個屬性：Language / Localizable。   &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_BiAIh45tOHE/SU6X83cJ8WI/AAAAAAAACVQ/_iPm2PQ0EJA/s1600-h/image%5B2%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="213" alt="image" src="http://lh5.ggpht.com/_BiAIh45tOHE/SU6X9283llI/AAAAAAAACVU/4Y4hlb8w9CM/image_thumb.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;當 Localizable = True時，你便可以指定 Language = 哪一個語系。此時，你便可以針對畫面進行不同語系的客製化。如下圖所示，重新指定畫面上的字，詳細作法，我想網路上都可以找得到，不再贅述。&lt;/p&gt;  &lt;p&gt;其二：   &lt;br /&gt;第一種作法是標準作法，但是並不適合真正實作在當地化的流程裏。試想，你或你的公司可能把整份原始碼送去某一個國家，例如：系統要做英文版，你會把你的原始碼拿到美國，然後請當地的公司幫你進行字彙的翻譯嗎？這是會有被複製及抄襲的風險的。所以，我們要用另一種作法，使用Microsoft .NET Framework SDK提供的工具：WinRes.exe (Windows Resources Localization Editor)。    &lt;br /&gt;首先，為了讓系統將畫面資料儲存在另外的Resources File，必須將系統內的每一個畫面(WinForm)的Localization屬性設成True。與第一種作法不同的是我們不需要在針對每一種需要的語系分別進行畫面重新編輯的動作(因為這個動作是要讓當地的軟體公司進行字彙翻譯)。接下來，我們只要Compiler程式就行了。&lt;/p&gt;  &lt;p&gt;這個時候，你可以觀察 obj\Debug 目錄的檔案，會與一般不同。每個畫面都會多出一個檔案( *.resources)。   &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_BiAIh45tOHE/SU6X-uSvG0I/AAAAAAAACVY/5n1WzxXOEAg/s1600-h/image%5B5%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="169" alt="image" src="http://lh6.ggpht.com/_BiAIh45tOHE/SU6X_vf5odI/AAAAAAAACVc/KhQrHRT0U2w/image_thumb%5B1%5D.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;這就是Visual Studio 因為你將Localization設定成True。所以，將畫面資訊儲存在這個檔案中。接下來的動作，你要將它預設是當地化時，在當地的公司要進行的動作。當你的系統Release之後，將需要當地化的畫面，它的Resources File (*.resources)，交付給他們，請他們利用WinRes.exe進行翻譯。&lt;/p&gt;  &lt;p&gt;操作方式如下：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;開啟Visual Studio 2005 Command&amp;#160; Prompt，並輸入     &lt;br /&gt;WinRes.exe &amp;lt;Resources File Name&amp;gt;，按下Enter。開啟Windows Resources Localization Editor。      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_BiAIh45tOHE/SU6YAew5z1I/AAAAAAAACVg/ORxp78p_m2Q/s1600-h/image%5B9%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="239" alt="image" src="http://lh3.ggpht.com/_BiAIh45tOHE/SU6YBAq4R5I/AAAAAAAACVk/roPmRDrRxkA/image_thumb%5B3%5D.png?imgmax=800" width="393" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;此時，可以針對畫面進行字彙的翻譯，甚至欄位的大小也可以進行調整。因為在不同的語系中，字型的大小可能會讓你的欄位擺放及長度都會所有不同的。&lt;/li&gt;    &lt;li&gt;完成後，按下File-&amp;gt;Save / SaveAs，你將可以指定要儲存成是某一種語系的資源檔(Resources File)。例如：你要把系統英文化，所以將畫面上的字都改成英文，此時你便可以撰擇儲存成英文系的資源檔。至於每一種英文系有什麼不同，請參考&lt;a href="http://dotnetframework.blogspot.com/2008/12/net_13.html" target="_blank"&gt;.NET 應用系統全球化(二)&lt;/a&gt;。      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_BiAIh45tOHE/SU6YBmNwgRI/AAAAAAAACVo/vMROyaS0SzA/s1600-h/image%5B12%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://lh5.ggpht.com/_BiAIh45tOHE/SU6YCQUFNzI/AAAAAAAACVs/TVdSR1QyE0A/image_thumb%5B4%5D.png?imgmax=800" width="167" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;當對方將翻譯好的Resources File回傳給你時，你將會收到該語系的resources files。例如：英文系，你可能收到的是     &lt;br /&gt;MultiLangSample1.frmMain.en-US.resourcs。      &lt;br /&gt;這個檔案直接放入系統內，系統就會變成支援該語系嗎？當然不可能，因為resources files，只是一個二進位碼的資源檔，此時仍然不是系統會執行的檔案( *.dll)。它仍然需要轉換成dll，並link至你的系統上。      &lt;br /&gt;參考一下，最後的結果：      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_BiAIh45tOHE/SU6YDJi3HhI/AAAAAAAACVw/T4CaJmg1joQ/s1600-h/image%5B16%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="238" alt="image" src="http://lh5.ggpht.com/_BiAIh45tOHE/SU6YDzL3XNI/AAAAAAAACV0/_LHkkQq0BB0/image_thumb%5B6%5D.png?imgmax=800" width="395" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;就我這個範例而言，每個語系的目錄下都會存在一個MultiLangSample1.resources.dll的檔案。&lt;/li&gt;    &lt;li&gt;此時，我們要利用Microsoft .NET Framework SDK中的另一個工具：al.exe (Assembly Link Tools)。&lt;/li&gt;    &lt;li&gt;開啟Visual Studio 2005 Command Prompt，並輸入     &lt;br /&gt;al.exe /out:&amp;lt;語系名稱&amp;gt;\MultiLangSample1.resources.dll /culture:&amp;lt;語系名稱&amp;gt; /embedresource:MultiLangSample1.frmMain.&amp;lt;語系名稱&amp;gt;.resources      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_BiAIh45tOHE/SU6YFOee2nI/AAAAAAAACV4/ZgAeE7GTSe0/s1600-h/image%5B20%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="253" alt="image" src="http://lh6.ggpht.com/_BiAIh45tOHE/SU6YGK_TK2I/AAAAAAAACV8/D63ReRkAnGw/image_thumb%5B8%5D.png?imgmax=800" width="377" border="0" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;恭喜你，你的系統這個時候就多了一個語系是英文語系。你可以開始進行測試了。   &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-4314093935048129268?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/4314093935048129268/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=4314093935048129268&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/4314093935048129268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/4314093935048129268'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2008/12/net_22.html' title='.NET 應用系統全球化(三)'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-7403106099360800595</id><published>2008-12-13T04:20:00.000+08:00</published><updated>2008-12-13T04:22:09.595+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalization'/><title type='text'>.NET 應用系統全球化(二)</title><content type='html'>&lt;p&gt;在了解全球化的基本步驟後，我們來了解.NET在全球化上最重要的一個物件CultureInfo。   &lt;br /&gt;CultureInfo，是.NET用來提供特定文化特性(Culture)的相關資訊。這個物件裏包含的資訊有文化特性、書寫系統、使用的行事曆以及如何格式日期和排序字串。我們可以針對DateTimeFormatInfo、NumberFormatInfo、CompareInfo和TextInfo的特定文化特性執行個體進行存取，這些物件裏包含特定文化特性作業所需的資訊，例如：大小寫的設定、日期和數字的格式化以及字串的比較，對於.NET應用系統國際化而言是很重要的資訊。&lt;/p&gt;  &lt;p&gt;我們先來了解CultureInfo的命名原則，例如：en-US。前兩碼小寫英文字母代表的是英文語言，而後兩碼大寫的英文字母代表的是國別或是區域別。所以由此可知en-US，代表的是在美國地區的英文，換而言之，當然也有en-CA(加拿大地區的英文)，en-AU(澳洲地區的英文)…等等。   &lt;br /&gt;故CultureInfo是有階層性的，以下圖可以清楚的表示：    &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_BiAIh45tOHE/SULH002idhI/AAAAAAAACVA/LYqrugRXd4I/s1600-h/image%5B4%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="292" alt="image" src="http://lh5.ggpht.com/_BiAIh45tOHE/SULH3u_AASI/AAAAAAAACVE/740UjE_s2kc/image_thumb%5B2%5D.png?imgmax=800" width="446" border="0" /&gt;&lt;/a&gt;     &lt;br /&gt;這樣做的好處是什麼呢？你可以針對所有英文語系的國家或是其它語系的國別，分別建立屬於該語系的資源，若單一國家還有不同的資源，你可以再往下一層建立專案該語系的國家專屬的資源，這樣在當地化時就可以大量減少客製化的問題。例如，我們可以針對英文語系的國家(en)建立英文版本，若美國與澳洲在某些詞句上有不同的詞彙或說法，我們再分別在en-US及en-CA的版本，分別建立不同的資源即可。&lt;/p&gt;  &lt;p&gt;也許，你會覺得很奇怪，為什麼我不以中文為例呢？因為在這樣的rule中，中文在命名原則中是屬於特例，怎麼說？因為中文的語系命名，並不Follow這樣的原則(前兩碼小寫英文字母)，而分別是zh-CHT(繁體中文)/zh-CHS(簡體中文)。所以，中文的語系結構就比較特殊，如下圖所示：   &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_BiAIh45tOHE/SULH6A3f1cI/AAAAAAAACVI/IbyhR74vMes/s1600-h/image%5B10%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="353" alt="image" src="http://lh6.ggpht.com/_BiAIh45tOHE/SULH7o4hGJI/AAAAAAAACVM/vSQGGjubKVg/image_thumb%5B6%5D.png?imgmax=800" width="421" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;所以，針對簡體中文，在建立資源檔時，我們就可以直接指定zh-CHS，基本上你就可以擁有zh-HK(香港特別行政區)/zh-MO(澳門特別行政區)/zh-CN(中國)/zh-SG(新加坡)，四個國家的版本。&lt;/p&gt;  &lt;p&gt;解釋完CultureInfo的階層概念後，我們再來說明CultureInfo的種類。CultureInfo的種類，基本上分成三種：&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;中性文化特性：所謂中性語系，其實指的是各位在上面所了解到的階層結構中的第一層，也就是所謂的語系的部份，例如：en、zh-CHT、zh-CHS…等等。因為並不會指定到國別，所以它也無法代表作業系統上的Culture(文化特性)，所以它稱之為中性語系，也因此它在程式裏也無法直接指定給Application.CultureInfo或是Thread.CurrentThread.CurrentCulture / Thread.CurrentThread.CurrentUiCulture。&lt;/li&gt;    &lt;li&gt;特定文化特性：指的是階層結構中的最後一層，因為會指定語系及國別，其實代表的就是作業系統中的文化特性。是我們在程式中會使用到的部份。&lt;/li&gt;    &lt;li&gt;不變文化特性：不區分文化特性。我們可以使用(“”)空字串的名稱或是直接在CultureInfo.InvariantCulture擷取出不因文化特性而異的執行個體。它包含的資訊，與英語相關，但是並不會因為任何的調整而改變它包含的任何資訊。所以，當你的全球化系統內部需要一致性的資料，不能也不會因為任何語系改變時，請使用這個文化特性的格式資訊，進行程式及資料處理。&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;說到這裏，我想大家對於這個物件應該有進一步的認識了。&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-7403106099360800595?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/7403106099360800595/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=7403106099360800595&amp;isPopup=true' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/7403106099360800595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/7403106099360800595'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2008/12/net_13.html' title='.NET 應用系統全球化(二)'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-1861715013632213015</id><published>2008-12-13T03:22:00.000+08:00</published><updated>2008-12-13T03:28:52.549+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalization'/><title type='text'>.NET 應用系統全球化(一)</title><content type='html'>&lt;p&gt;使用 Microsoft .NET Framework，如何開發一個全球化的系統呢？首先，筆者先來說明一下，如何將一個應用系統全球化。    &lt;br /&gt;所謂全球化，一般而言分成二大部份。一是國際化，接下來才會進行當地化。&lt;/p&gt;  &lt;p&gt;一般而言，全球化是一個目標！！而在過程中系統需先進行國際化(支援多國語系，包含畫面，程式及資料)。當系統已升級至全球化了，接下來才會考慮究竟針對哪幾個國家進行當地化的動作。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;國際化     &lt;br /&gt;首先，必須讓原本的系統能接受全球化後，可能輸入或輸出的資料。這麼說好了，系統本身必須跟整個語系脫離(在.NET中，指的便是CultureInfo這個物件)。語系會影響系統的字串，日期，數字，貨幣…等格式。這些都必須改寫成活的，因為不同的語系，字串的比對、排序，日期的格式，數字的格式，貨幣的小數點位數都可能會不同。在之後說明到CultureInfo這個物件時，筆者再詳細一點說明。 &lt;/li&gt;    &lt;li&gt;當地化      &lt;br /&gt;當你的應用系統完成了國際化的調整後，接下來就端看你想要對哪個語系進行當地化了。最基礎的當地化，就是畫面及訊息都必須改成當地的字型編碼。Microsoft .NET提供了多種的方式進行，你甚至可以在Visual Studio中很簡單的完成這項工作。但是，當你利用Visual Studio進行當地化時，你必須要有完整的程式碼(方案)才可以進行。若你需要在當地找外包，進行當地化時此種作法就會有問題的，因為你不可能直接把完整程式碼全部交給當地的外包。而在Microsoft .NET 中我們也可以使用另外的作法達到你的目的。       &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-1861715013632213015?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/1861715013632213015/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=1861715013632213015&amp;isPopup=true' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/1861715013632213015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/1861715013632213015'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2008/12/net.html' title='.NET 應用系統全球化(一)'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-4568172580596181177</id><published>2008-12-10T17:46:00.001+08:00</published><updated>2008-12-10T17:46:46.202+08:00</updated><title type='text'>整合 Windows Vista 和 Office 2007 的基礎學習園地</title><content type='html'>&lt;p&gt;微軟為了讓一般使用者更加了解 Windows Vista 和 Office 2007 的使用方法而特別建製的一個技術園地   &lt;br /&gt;它特別彙整來自在技術支援網站上的Windows Online, Office Online 以及 TechNet 網站上有用的 how-to 文章，線上學習視訊和網路廣播等相關資訊，是一個不錯的網站&lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/gp/cp_tech_master/zh-tw#tab0" target="_blank"&gt;整合Windows Vista和Office 2007的基礎學習園地&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-4568172580596181177?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/4568172580596181177/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=4568172580596181177&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/4568172580596181177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/4568172580596181177'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2008/12/windows-vista-office-2007.html' title='整合 Windows Vista 和 Office 2007 的基礎學習園地'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-2185663234325511174</id><published>2008-12-10T14:51:00.001+08:00</published><updated>2008-12-10T14:51:22.255+08:00</updated><title type='text'>cmd.exe下的指令說明</title><content type='html'>&lt;p&gt;gpedit.msc-----本機群組原則   &lt;br /&gt;nslookup-------IP位址偵測器    &lt;br /&gt;explorer-------開啟檔案總管    &lt;br /&gt;logoff---------登出指令    &lt;br /&gt;tsshutdn-------60秒倒計時關機指令    &lt;br /&gt;lusrmgr.msc----本機使用者及群組    &lt;br /&gt;notepad--------開啟記事本    &lt;br /&gt;cleanmgr-------磁碟清理    &lt;br /&gt;net start messenger----開始net send 服務    &lt;br /&gt;compmgmt.msc---電腦管理    &lt;br /&gt;net stop messenger-----停止net send 服務    &lt;br /&gt;dvdplay--------呼叫Microsoft Media Player    &lt;br /&gt;charmap--------啟動字元對應表    &lt;br /&gt;calc-----------啟動計算機    &lt;br /&gt;dfrg.msc-------磁碟重組工具    &lt;br /&gt;chkdsk.exe-----Chkdsk磁牒檢查    &lt;br /&gt;devmgmt.msc--- 裝置管理員    &lt;br /&gt;srononce -p ----15秒關機    &lt;br /&gt;dxdiag---------檢查DirectX資訊    &lt;br /&gt;regedt32-------註冊表編輯器    &lt;br /&gt;rsop.msc-------群組原則結果集    &lt;br /&gt;mem.exe--------顯示記憶體使用情況    &lt;br /&gt;regedit.exe----註冊表    &lt;br /&gt;perfmon.msc----電腦效能監測程序    &lt;br /&gt;winver---------檢查Windows版本    &lt;br /&gt;sfc /scannow-----掃瞄錯誤並復原    &lt;br /&gt;taskmgr-----工作管理器（2000／xp／2003）    &lt;br /&gt;eventvwr.msc------------事件檢視器    &lt;br /&gt;secpol.msc----------------本機安全性設定    &lt;br /&gt;rsop.msc------------------原則的結果集    &lt;br /&gt;ntbackup----------------啟動製作備份還原嚮導    &lt;br /&gt;mstsc-----------遠端桌面    &lt;br /&gt;winver---------檢查Windows版本    &lt;br /&gt;wmimgmt.msc----開啟windows管理體系結構(WMI)    &lt;br /&gt;wupdmgr--------windows更新程序    &lt;br /&gt;wscript--------windows指令碼宿主設定    &lt;br /&gt;write----------呼叫WordPad    &lt;br /&gt;winmsd---------系統資訊    &lt;br /&gt;mem.exe--------顯示記憶體使用情況    &lt;br /&gt;mspaint--------小畫家    &lt;br /&gt;magnify--------放大鏡    &lt;br /&gt;mmc------------MMC    &lt;br /&gt;mobsync--------同步指令    &lt;br /&gt;dxdiag---------檢查DirectX資訊    &lt;br /&gt;devmgmt.msc--- 裝置管理員    &lt;br /&gt;diskmgmt.msc---磁牒管理實用程序    &lt;br /&gt;dcomcnfg-------開啟系統元件服務    &lt;br /&gt;ddeshare-------開啟DDE共享設定    &lt;br /&gt;dvdplay--------DVD播放器    &lt;br /&gt;notepad--------開啟記事本    &lt;br /&gt;nslookup-------網路管理的工具嚮導    &lt;br /&gt;ntbackup-------系統製作備份和還原    &lt;br /&gt;ntmsmgr.msc----移動存儲管理器    &lt;br /&gt;ntmsoprq.msc---移動存儲管理員操作請求    &lt;br /&gt;netstat -an----(TC)指令檢查連接    &lt;br /&gt;Usyncapp--------新增一個公文包    &lt;br /&gt;sysedit--------系統配置編輯器    &lt;br /&gt;sigverif-------文件簽名驗證程序    &lt;br /&gt;psndrec32-------錄音機    &lt;br /&gt;shrpubw--------新增共用資料夾    &lt;br /&gt;secpol.msc-----本機安全原則    &lt;br /&gt;services.msc---本機服務設定    &lt;br /&gt;Sndvol32-------音量控制程序    &lt;br /&gt;sfc.exe--------系統檔案檢查器    &lt;br /&gt;sfc /scannow---windows文件保護    &lt;br /&gt;tsshutdn-------60秒倒計時關機指令    &lt;br /&gt;taskmgr--------工作管理器    &lt;br /&gt;eventvwr-------事件檢視器    &lt;br /&gt;eudcedit-------造字程序    &lt;br /&gt;explorer-------開啟檔案總管    &lt;br /&gt;lpackager-------對像包裝程序    &lt;br /&gt;perfmon.msc----電腦效能監測程序l    &lt;br /&gt;progman--------程序管理器    &lt;br /&gt;regedit.exe----註冊表    &lt;br /&gt;rsop.msc-------群組原則結果集    &lt;br /&gt;rononce -p ----15秒關機    &lt;br /&gt;regsvr32 /u *.dll----反註冊dll元件    &lt;br /&gt;regsvr32 /u zipfldr.dll------取消ZIP支持    &lt;br /&gt;cmd.exe--------CMD命令提示字元    &lt;br /&gt;chkdsk.exe-----Chkdsk磁牒檢查    &lt;br /&gt;certmgr.msc----證書管理實用程序    &lt;br /&gt;calc-----------啟動計算器    &lt;br /&gt;charmap--------啟動字元對應表    &lt;br /&gt;cliconfg-------SQL SERVER 客戶端網路實用程序    &lt;br /&gt;Clipbrd--------剪貼板檢視器    &lt;br /&gt;conf-----------啟動netmeeting    &lt;br /&gt;compmgmt.msc---電腦管理    &lt;br /&gt;ciadv.msc------索引服務程序    &lt;br /&gt;osk------------開啟螢幕小鍵盤    &lt;br /&gt;odbcad32-------ODBC資料來源管理器    &lt;br /&gt;lusrmgr.msc----本機使用者及群組    &lt;br /&gt;iexpress-------木馬元件服務工具    &lt;br /&gt;fsmgmt.msc-----共用資料夾管理器    &lt;br /&gt;utilman--------協助工具管理器 &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-2185663234325511174?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/2185663234325511174/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=2185663234325511174&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/2185663234325511174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/2185663234325511174'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2008/12/cmdexe.html' title='cmd.exe下的指令說明'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-8634108150111818155</id><published>2008-11-15T00:34:00.001+08:00</published><updated>2008-11-15T00:34:41.503+08:00</updated><title type='text'>Visual Studio 2010 CTP 已經開放下載囉</title><content type='html'>&lt;p&gt;這兩天在微軟的download site上發現微軟已經開放免費下載 Visual Studio 2010 &amp;amp; .NET Framework 4.0 Preview CTP囉&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=922b4655-93d0-4476-bda4-94cf5f8d4814&amp;amp;displaylang=en&amp;amp;tm" target="_blank"&gt;Microsoft Pre-release Software Visual Studio 2010 and .NET Framework 4.0 Community Technology Preview (CTP)&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-8634108150111818155?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/8634108150111818155/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=8634108150111818155&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/8634108150111818155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/8634108150111818155'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2008/11/visual-studio-2010-ctp.html' title='Visual Studio 2010 CTP 已經開放下載囉'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-5584943598743940205</id><published>2008-11-07T14:41:00.001+08:00</published><updated>2008-11-07T14:41:56.470+08:00</updated><title type='text'>Excel Driver Error : 系統資源滿載</title><content type='html'>&lt;p&gt;I tried to use all the 3 connection strings that you specified in your sample and had no problems retrieving and displaying data from excel file (Excel 2003)&lt;/p&gt;  &lt;p&gt;To try my sample create a new excel file and put these values in &lt;/p&gt;  &lt;p&gt;Col1&amp;#160; Col2   &lt;br /&gt;1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Hello    &lt;br /&gt;2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Test&lt;/p&gt;  &lt;p&gt;Create test.asp and paste the following code. Open IE and call &lt;a href="http://&amp;lt;machinename&amp;gt;/test.asp"&gt;/test.asp&amp;quot;&amp;gt;http://&amp;lt;machinename&amp;gt;/test.asp&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;% OPTION EXPLICIT %&amp;gt;   &lt;br /&gt;&amp;lt;%    &lt;br /&gt;On Error Resume Next    &lt;br /&gt;Dim rs    &lt;br /&gt;Dim cn    &lt;br /&gt;Dim j&lt;/p&gt;  &lt;p&gt;'Instantiate Objects   &lt;br /&gt;Set cn = Server.CreateObject(&amp;quot;ADODB.Connection&amp;quot;)    &lt;br /&gt;Set rs = Server.CreateObject(&amp;quot;ADODB.Recordset&amp;quot;)&lt;/p&gt;  &lt;p&gt;'Open connection&lt;/p&gt;  &lt;p&gt;'cn.Open &amp;quot;Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testbook.xls; Extended Properties=&amp;quot;&amp;quot;Excel 8.0;HDR=Yes;&amp;quot;&amp;quot; &amp;quot;&lt;/p&gt;  &lt;p&gt;'cn.Open &amp;quot;DBQ=C:\testbook.xls;DRIVER=Microsoft Excel Driver (*.xls);UID=;UserCommitSync=Yes;Threads=3;SafeTransactions=0;ReadOnly=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL=excel 8.0;DriverId=790&amp;quot;&lt;/p&gt;  &lt;p&gt;cn.Open &amp;quot;DRIVER=Microsoft Excel Driver (*.xls);DriverId=790;DefaultDir=C:\;DBQ=testbook.xls&amp;quot;&lt;/p&gt;  &lt;p&gt;rs.Open &amp;quot;select * from testtable1&amp;quot;, cn&lt;/p&gt;  &lt;p&gt;if rs.eof then   &lt;br /&gt;&amp;#160;&amp;#160; Response.Write(&amp;quot;EOF or BOF&amp;quot;)    &lt;br /&gt;&amp;#160;&amp;#160; Response.End    &lt;br /&gt;end if&lt;/p&gt;  &lt;p&gt;While Not rs.EOF   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; For j = 0 To rs.Fields.Count - 1    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.Write( rs.Fields(j).Value )    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.Write( &amp;quot;&amp;#160; &amp;quot;)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Next    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Response.Write (&amp;quot;&amp;lt;br&amp;gt;&amp;quot;)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; rs.MoveNext    &lt;br /&gt;Wend&lt;/p&gt;  &lt;p&gt;'Clean up   &lt;br /&gt;rs.Close    &lt;br /&gt;cn.Close    &lt;br /&gt;set rs = Nothing    &lt;br /&gt;set cn = Nothing    &lt;br /&gt;%&amp;gt;&lt;/p&gt;  &lt;p&gt;By the way the error that you are seeing 0x8007000E ( E_OUTOFMEMORY )&lt;/p&gt;  &lt;p&gt;Hope this helps&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-5584943598743940205?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/5584943598743940205/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=5584943598743940205&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/5584943598743940205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/5584943598743940205'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2008/11/excel-driver-error.html' title='Excel Driver Error : 系統資源滿載'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-1831802352918937605</id><published>2008-11-03T02:32:00.001+08:00</published><updated>2008-11-03T02:32:40.975+08:00</updated><title type='text'>patterns &amp; practices: Visual Studio 2005 Team System Guidance - Home</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeplex.com/VSTSGuidance/Wiki/View.aspx?title=Guidelines&amp;amp;referringTitle=Home"&gt;patterns &amp;amp; practices: Visual Studio 2005 Team System Guidance - Home&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-1831802352918937605?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/1831802352918937605/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=1831802352918937605&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/1831802352918937605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/1831802352918937605'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2008/11/patterns-practices-visual-studio-2005.html' title='patterns &amp;amp; practices: Visual Studio 2005 Team System Guidance - Home'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7084184.post-6911447789591440685</id><published>2008-10-31T12:14:00.001+08:00</published><updated>2008-10-31T12:14:31.296+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Team Foundation Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><title type='text'>Delete a Team Project from Team Foundation Server</title><content type='html'>&lt;p&gt;在Team Explorer中，我們無法直接刪除「Team Project」。那我們該如何刪除不要的Team Project呢？&lt;/p&gt;  &lt;p&gt;其實我們可以使用Command Line指令刪除Team Project。首先，先打開Visual Studio 2005 Command Prompt。在這裏面輸入&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;TfsDeleteProject.exe [/q] [/force] [/server:servername] &lt;span class="str"&gt;&amp;quot;Team Project Name&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="str"&gt;&lt;font color="#400000"&gt;這樣就可以直接刪除Team Project囉！但是請注意，你的帳號密碼是Administrator群組&lt;/font&gt;。&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;------------------------------------------------------
Kevin,Tsui in Taiwan
mailto:yakevin@gmail.com
msn:yakevin@hotmail.com
------------------------------------------------------&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7084184-6911447789591440685?l=dotnetframework.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetframework.blogspot.com/feeds/6911447789591440685/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7084184&amp;postID=6911447789591440685&amp;isPopup=true' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/6911447789591440685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7084184/posts/default/6911447789591440685'/><link rel='alternate' type='text/html' href='http://dotnetframework.blogspot.com/2008/10/delete-team-project-from-team.html' title='Delete a Team Project from Team Foundation Server'/><author><name>KevinTsui</name><uri>http://www.blogger.com/profile/10976518369541440959</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09606312530781062489'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>