<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0cGSH89fCp7ImA9WhRUF04.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494</id><updated>2012-01-28T15:23:49.164+07:00</updated><title>เกษม กมลชัยพิสิฐ</title><subtitle type="html">What you will become ..... ?
&lt;br&gt;&lt;a href="http://kasem-mesak.blogspot.com"&gt;&amp;lt;&amp;lt; คลิกเพื่อกลับไปหน้าแรก&lt;/a&gt;</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://kasem-mesak.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/efVtQ" /><feedburner:info uri="blogspot/efvtq" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DUMFRngzcCp7ImA9WhRUFkg.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-4337396367165791757</id><published>2012-01-27T16:24:00.001+07:00</published><updated>2012-01-27T16:43:37.688+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-27T16:43:37.688+07:00</app:edited><title>FLASH GAME การสร้างเกมภาพระบายสี Color Book</title><content type="html">เนื้อหาในส่วนนี้จะเป็นวีดีโอสอนการเขียนเกมภาพระบายสีโดยใช้โปรแกรม Adobe Flash และ Action Script 3 จัดทำในลักษณะของวีดีโอ จะได้เรียนรู้วีธีการสร้างและวิธีการเขียน ไม่เก่งการเขียนโปรแกรมก็เรียนรู้ได้ ไม่เคยเขียน Action Script ก็ทำตามได้ สรุป ใครๆ ก็สามารถทำได้ถ้าได้ดูและทำตาม&lt;br /&gt;
&lt;br /&gt;
วีดีโอสอนการเขียนเกมภาพวาดระบายสี&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/SeGDEwuiqhE/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/SeGDEwuiqhE?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/SeGDEwuiqhE?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
ด้านล่างนี้คือโค้ดคำสั่ง Action Script 3.0 ที่ใช้ในโปรแกรมที่นำเสนอข้างต้น&lt;br /&gt;
&lt;br /&gt;
var np:Number = 17; &lt;br /&gt;
var nc:Number = 10; &lt;br /&gt;
var color:Number = 0xffffff;&lt;br /&gt;
var cArray:Array = new Array(0xff0000,0x00ff00,0x0000ff,0xffff00,0x00ffff,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xff00ff,0x66ff66,0x666666,0x000000,0xffffff);&lt;br /&gt;
var colorchange:ColorTransform = new ColorTransform();&lt;br /&gt;
GameStart();&lt;br /&gt;
function GameStart() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; btnNew.addEventListener(MouseEvent.CLICK, mcNew);&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var ip:uint = 1; ip &amp;lt;= np; ip++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; colorchange.color = 0xffffff;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;//trace(this["p"+ip].name);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;this["p"+ip].transform.colorTransform = colorchange;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this["p"+ip].addEventListener(MouseEvent.CLICK, mcPaint);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var ic:uint = 1; ic &amp;lt;= nc; ic++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this["c"+ic].addEventListener(MouseEvent.CLICK,mcColor);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; colorchange.color = cArray[ic - 1];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this["c"+ic].transform.colorTransform = colorchange;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; colorchange.color = color;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sc.transform.colorTransform = colorchange;&lt;br /&gt;
}&lt;br /&gt;
function mcNew(e:MouseEvent): void {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var ip:uint = 1; ip &amp;lt;= np; ip++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; colorchange.color = 0xffffff;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;this["p"+ip].transform.colorTransform = colorchange;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
function mcColor(e:MouseEvent): void {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var objName:String = e.target.name; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; color = cArray[uint(objName.substr(1,(objName.length)-1))-1];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; colorchange.color = color;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sc.transform.colorTransform = colorchange;&lt;br /&gt;
}&lt;br /&gt;
function mcPaint(e:MouseEvent):void {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; colorchange.color = color;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; this[e.target.name].transform.colorTransform = colorchange;&lt;br /&gt;
}&lt;br /&gt;
เขียนเกมไม่ยากใช่ไหม&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-4337396367165791757?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/s6WVwUe35zHlFSjyAQroq01KJTY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s6WVwUe35zHlFSjyAQroq01KJTY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/s6WVwUe35zHlFSjyAQroq01KJTY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s6WVwUe35zHlFSjyAQroq01KJTY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/2yfteMa7e_Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/4337396367165791757/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2012/01/flash-game-color-book.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/4337396367165791757?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/4337396367165791757?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/2yfteMa7e_Y/flash-game-color-book.html" title="FLASH GAME การสร้างเกมภาพระบายสี Color Book" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2012/01/flash-game-color-book.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMGR3s7fSp7ImA9WhRUEEg.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-4800153365188548294</id><published>2012-01-20T13:36:00.004+07:00</published><updated>2012-01-20T16:07:06.505+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-20T16:07:06.505+07:00</app:edited><title>การใช้งาน HAMACHI ติดตั้ง VPN แบบกล้วยๆ</title><content type="html">&lt;span style="color: magenta;"&gt;VPN&lt;/span&gt;&amp;nbsp;(&lt;strong&gt;Virtual Private Network)&amp;nbsp;&lt;/strong&gt;&amp;nbsp;คือเทคโนโลยีการเชื่อมต่อเครือข่ายในลักษณะเป็นระบบเครือข่ายภายในองค์กร โดยเชื่อมเครือข่ายในแต่ละสาขาเข้าด้วยกัน โดยอาศัย Internet เป็นตัวกลาง ทำให้เราสามารถใช้แฟ้มข้อมูล ฐานข้อมูลร่วมกันได้ เป็นต้น &lt;br /&gt;
&lt;br /&gt;
การสร้างเครือข่าย VPN ก็ทำได้ไม่ยากสำหรับองค์กรที่มีเบี้ยน้อยหอยน้อย สามารถทำได้ง่ายๆ โดยใช้ซอฟต์แวร์ ชื่อ&amp;nbsp; Hamachi ซึ่งเป็นผู้ผลิตเดียวกับตัว Logmein ที่ผู้เขียนได้เคยเขียนบทความไว้ &lt;br /&gt;
&lt;br /&gt;
เรามาเริ่มกันเลยดีกว่า&lt;br /&gt;
ก่อนอื่นต้องดาวน์โหลซอฟต์แวร์ ให้เปิดเว็บไซต์ google.com แล้วพิมพ์คำค้นหาว่า &amp;nbsp;hamachi download &lt;br /&gt;
แล้วทำการดาวน์โหลดมาเก็บไว้ที่เครื่องเรา จากนั้นทำการติดตั้ง&lt;br /&gt;
สำหรับผู้เขียนได้ใช้ Hamachi เวอร์ชัน 2.1.0.124 ในติดตั้ง&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;การติดตั้ง Hamachi&lt;/u&gt;&lt;br /&gt;
หลังจากเรียกเรียกไฟล์ติดตั้งของ Hamachi จะปรากฎหน้าจอดังภาพด้านล่าง &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-wcgpv0_D_H4/TxkGL8NxCxI/AAAAAAAAAxo/Ygdcx7Wj1vA/s1600/HAMACHI_01.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" nfa="true" src="http://1.bp.blogspot.com/-wcgpv0_D_H4/TxkGL8NxCxI/AAAAAAAAAxo/Ygdcx7Wj1vA/s320/HAMACHI_01.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ทำการเลือกภาษาที่ต้องการ จากนั้นคลิกปุ่ม Next&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://2.bp.blogspot.com/-mksqi4VV-qY/TxkHK02VUaI/AAAAAAAAAxw/5taTN92tjf8/s1600/HAMACHI_02.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" nfa="true" src="http://2.bp.blogspot.com/-mksqi4VV-qY/TxkHK02VUaI/AAAAAAAAAxw/5taTN92tjf8/s320/HAMACHI_02.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
คลิกปุ่ม Next ไปเรื่อย ๆ จนกระทั่งติดตั้งเสร็จ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Zw1rMbuDp-8/TxkHR1Ep8dI/AAAAAAAAAyQ/5w1DbwWg2fY/s1600/HAMACHI_06.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" nfa="true" src="http://1.bp.blogspot.com/-Zw1rMbuDp-8/TxkHR1Ep8dI/AAAAAAAAAyQ/5w1DbwWg2fY/s320/HAMACHI_06.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
แล้วคลิกปุ่ม Finish&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;การกำหนดเครื่องคอมพิวเตอร์หลัก&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
หลังจากที่ได้ทำการติดตั้งโปรแกรม Hamachi แล้ว เครื่องที่เราต้องการให้เป็นเครื่องคอมพิวเตอร์หลัก (ที่เราจะทำให้เป็นเซิร์ฟเวอร์)&amp;nbsp;ให้ทำการกำหนดค่าต่างๆ ดังนี้&amp;nbsp;(ทำแค่ครั้งแรกครั้งเดียว)&lt;br /&gt;
&lt;br /&gt;
1. เปิดโปรแกรม Hamachi จะปรากฎหน้าต่างดังภาพ&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Y3vkKBjDGZE/TxkIsRI10jI/AAAAAAAAAyY/PNZ8xYN1XTI/s1600/HAMACHI_07.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" nfa="true" src="http://1.bp.blogspot.com/-Y3vkKBjDGZE/TxkIsRI10jI/AAAAAAAAAyY/PNZ8xYN1XTI/s320/HAMACHI_07.png" width="204" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
2. ให้คลิกปุ่ม เปิด ตามลูกศรชี้ (ปุ่มที่อยู่ติดกับตัวเลข 0.0.0.0) &lt;br /&gt;
รอสักครู่จะปรากฎหน้าต่าง Register this client ดังภาพ &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-AyWqs8lnvPg/TxkIuoeD7HI/AAAAAAAAAyg/TBskiBYb-0Y/s1600/HAMACHI_08.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="267" nfa="true" src="http://1.bp.blogspot.com/-AyWqs8lnvPg/TxkIuoeD7HI/AAAAAAAAAyg/TBskiBYb-0Y/s320/HAMACHI_08.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
ที่ช่อง Client name ให้กำหนดชื่อ ตามที่ต้องการ ลงไป จากตัวอย่าง กำหนดเป็น SUPERMAN-PC &lt;br /&gt;
จากนั้นคลิกปุ่ม Create &lt;br /&gt;
รอสักครู่จะปรากฏหน้าต่างแสดงหมายเลขไอพี และชื่อเครื่องที่เรากำหนดไว้ ดังภาพ &lt;br /&gt;
(หากไม่ขึ้นให้ตรวจสอบการเชื่อมต่ออินเทอร์เน็ต) &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-O7U44Ttr8AE/TxkJx8ox7GI/AAAAAAAAAyo/wpOf2qSl9f8/s1600/HAMACHI_09.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" nfa="true" src="http://1.bp.blogspot.com/-O7U44Ttr8AE/TxkJx8ox7GI/AAAAAAAAAyo/wpOf2qSl9f8/s320/HAMACHI_09.png" width="204" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. ทำการสร้างกลุ่มของ Network โดยคลิกที่ปุ่ม Create a new network ตามลูกศรในภาพ&lt;br /&gt;
จะปรากฏหน้าต่างให้กำหนด Network ID และ Password ดังนี้&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-HVfPyNful_4/TxkKZvY-7xI/AAAAAAAAAyw/9vVM39v7Mww/s1600/HAMACHI_10.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" nfa="true" src="http://3.bp.blogspot.com/-HVfPyNful_4/TxkKZvY-7xI/AAAAAAAAAyw/9vVM39v7Mww/s320/HAMACHI_10.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
4. ให้กำหนดชื่อ Network ID และกำหนดรหัสผ่าน สำหรับให้เครื่องลูกข่ายเข้ามาติดต่อ &lt;br /&gt;
จากนั้นคลิกปุ่ม Create เราก็จะได้ กลุ่ม Network แสดงดังภาพ &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-i3sfvPJjXwY/TxkK8rNpoBI/AAAAAAAAAy4/8jhnJPfhAyk/s1600/HAMACHI_11.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" nfa="true" src="http://1.bp.blogspot.com/-i3sfvPJjXwY/TxkK8rNpoBI/AAAAAAAAAy4/8jhnJPfhAyk/s320/HAMACHI_11.png" width="204" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
การกำหนดให้เครื่องเราทำตัวเป็นเครื่องคอมพิวเตอร์หลัก (Server) เป็นอันเสร็จสิ้น &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;การ VPN เข้าใช้งานจากเครื่องลูกข่าย&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
เมื่อเราติดตั้งเครื่องคอมพิวเตอร์หลักเรียบร้อย หากต้องการให้เครื่องคอมพิวเตอร์อื่นเข้ามาติดต่อยังเครื่องคอมพิวเตอร์หลักให้ติดตั้งโปรแกรม Hamachi ที่เครื่องลูกข่ายด้วยแล้วทำการเปิดใช้งาน&lt;br /&gt;
และทำการกำหนดค่าเหมือนกับการติดตั้งคอมพิวเตอร์หลัก แต่ทำเฉพาะ ข้อ 1 และ ข้อ 2&lt;br /&gt;
เมื่อทำเสร็จ จะปรากฏหน้าจอดังภาพ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-bhkzE42riLg/TxkMzHfhReI/AAAAAAAAAzA/d_mKYHKQQdY/s1600/HAMACHI_12.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" nfa="true" src="http://4.bp.blogspot.com/-bhkzE42riLg/TxkMzHfhReI/AAAAAAAAAzA/d_mKYHKQQdY/s320/HAMACHI_12.png" width="204" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ให้คลิกที่ปุ่ม Join an existing network จะปรากฏหน้าจอดังภาพ&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Iz6jAQkn8NM/TxkM_NuRdhI/AAAAAAAAAzI/hGiB95pwjno/s1600/HAMACHI_13.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" nfa="true" src="http://3.bp.blogspot.com/-Iz6jAQkn8NM/TxkM_NuRdhI/AAAAAAAAAzI/hGiB95pwjno/s320/HAMACHI_13.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ที่หน้าต่าง Join Network ให้กำหนดชื่อ Network ID (ชื่อนี้กำหนดไว้ตอนที่เราทำคอมพิวเตอร์หลัก) &lt;br /&gt;
และที่ช่อง Password ให้ใส่รหัสผ่านที่กำหนดไว้ตอนที่เราทำคอมพิวเตอร์หลักอีกเช่นกัน&lt;br /&gt;
&lt;br /&gt;
เมื่อกำหนดเสร็จคลิกที่ปุ่ม Join จะปรากฏหน้าต่างดังภาพ (หากไม่ขึ้น ตรวจสอบ การเชื่อมต่อ internet หรือชื่อ Network ID หรือรหัสผ่านว่าถูกต้องหรือไม่)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-BfOLK7og1W0/TxkNpE-9T-I/AAAAAAAAAzQ/of_EF53NE2Y/s1600/HAMACHI_14.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" nfa="true" src="http://4.bp.blogspot.com/-BfOLK7og1W0/TxkNpE-9T-I/AAAAAAAAAzQ/of_EF53NE2Y/s320/HAMACHI_14.png" width="204" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
หากปรากฏชื่อของเครื่องคอมพิวเตอร์หลัก แสดงว่าติดต่อสำเร็จ&lt;br /&gt;
เราสามารถใช้งาน VPN ได้แล้ว&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;การใช้งาน แชท ระหว่างเครื่อง&lt;/u&gt;&lt;br /&gt;
เมื่อเราได้ทำการติดตั้งและติดต่อระหว่างเครื่องคอมพิวเตอร์หลัก กับเครื่องคอมพิวเตอร์ลูกข่ายเรียบร้อยแล้ว สิ่งที่เราสามารถทำได้อย่างหนึ่งคือการ แชท (chat) หรือการพูดคุยกันระหว่างเครื่อง ซึ่งสามารถทำได้ไม่ยาก โดยการคลิกเมาส์ปุ่มขวาที่เครื่องที่เราต้องการติดต่อ แล้วเลือกรายการ Chat&lt;br /&gt;
ดังภาพ&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-x7lJQUx5usY/Txkmz1CBu1I/AAAAAAAAAzY/xw-2qylSasc/s1600/HAMACHI_15.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" nfa="true" src="http://2.bp.blogspot.com/-x7lJQUx5usY/Txkmz1CBu1I/AAAAAAAAAzY/xw-2qylSasc/s320/HAMACHI_15.png" width="204" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;การใช้งานฐานข้อมูลจากเครื่องคอมพิวเตอร์หลัก&lt;/u&gt;&lt;br /&gt;
สำหรับผู้เขียนได้ติดตั้งระบบฐานข้อมูล SQL Server ไว้ที่คอมพิเตอร์หลัก และได้ทำการเข้าถึงจากเครื่องคอมพิวเตอร์ลูกข่าย &lt;br /&gt;
การทำงานนั้นเราต้องทราบหมายเลข ไอพี (ที่ได้จาก hamachi)ของเครื่องคอมพิวเตอร์หลักที่ติดตั้ง SQL Server &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-9XsFszW-Pxc/Txko4FX-NtI/AAAAAAAAAzg/Dre1QYyMKHE/s1600/HAMACHI_16.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" nfa="true" src="http://1.bp.blogspot.com/-9XsFszW-Pxc/Txko4FX-NtI/AAAAAAAAAzg/Dre1QYyMKHE/s320/HAMACHI_16.png" width="204" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
จากภาพเป็นหมายเลขไอพีของเครื่องคอมพิวเตอร์หลัก ที่ได้ติดตั้ง SQL Server ไว้&lt;br /&gt;
ซึ่งเราจะนำหมายเลขนี้มาใช้ในการติดต่อกับฐานข้อมูลผ่านทางโปรแกรม&lt;br /&gt;
Microsoft SQL Server Management Studio&amp;nbsp;ดังภาพ&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-MPmzDbrJyds/TxkqBq3NxnI/AAAAAAAAAzo/6FDhiVjbupY/s1600/HAMACHI_17.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="227" nfa="true" src="http://3.bp.blogspot.com/-MPmzDbrJyds/TxkqBq3NxnI/AAAAAAAAAzo/6FDhiVjbupY/s320/HAMACHI_17.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
หลังจากเราติดต่อเข้าใช้งาน SQL Server ได้แล้วก็ทำงานได้ทุกอย่าง เหมือนเราใช้งานภายใต้เน็ตเวิร์คเดียวกัน ดังภาพ&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-9KxmzjgNWX4/Txkqu5-m32I/AAAAAAAAAzw/kIgd39uSVjU/s1600/HAMACHI_18.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="204" nfa="true" src="http://1.bp.blogspot.com/-9KxmzjgNWX4/Txkqu5-m32I/AAAAAAAAAzw/kIgd39uSVjU/s320/HAMACHI_18.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;การใช้งานโปรแกรมที่ใช้ฐานข้อมูลในลักษณะ Client Server&lt;/u&gt;&lt;br /&gt;
ในกรณีที่เรามีสำนักงานสาขาอยู่ต่างที่กัน เราสามารถทำการเชื่อมต่อด้วย Hamachi แล้วทำงานเสมือนหนึ่งเราอยู่ ณ. เครือข่ายเดียวกัน &lt;br /&gt;
สำหรับตัวอย่างที่นำเสนอเป็นการเรียกโปรแกรมจากเครื่องลูกข่าย เพื่อติดต่อไปยังฐานข้อมูลของสำนักงานใหญ่ ผ่านทาง Hamachi &lt;br /&gt;
- เครื่องลูกข่ายได้ติดตั้งโปรแกรม hamachi, ติดตั้งซอฟต์แวร์ปฏิบัติงาน , ติดตั้งไดร์เวอร์สำหรับติดต่อ กับ SQL Server &lt;br /&gt;
เมื่อทำการเรียกโปรแกรม ก็จะเข้าไปดึงข้อมูลจากสำนักงานใหญ่ผ่านทาง Hamachi มาแสดง&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-h4FNoczcuMQ/Txks-1vBdqI/AAAAAAAAAz4/eCCiKJ73gbY/s1600/HAMACHI_19.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="238" nfa="true" src="http://4.bp.blogspot.com/-h4FNoczcuMQ/Txks-1vBdqI/AAAAAAAAAz4/eCCiKJ73gbY/s320/HAMACHI_19.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
จากภาพด้านบนเป็นการกำหนด Data Source ให้ไปเรียกข้อมูลที่เครื่องคอมพิวเตอร์หลัก&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/-lnBp3R7c_TA/TxktYgpMLXI/AAAAAAAAA0A/sTGN257FJZc/s1600/HAMACHI_20.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="238" nfa="true" src="http://1.bp.blogspot.com/-lnBp3R7c_TA/TxktYgpMLXI/AAAAAAAAA0A/sTGN257FJZc/s320/HAMACHI_20.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
จากภาพด้านบน เป็นตัวอย่างการค้นหาเอกสารจากฐานข้อมูลได้ผลลัพธ์ออกมาจำนวน 5070 รายการ แล้วนำมาแสดงในโปรแกรม ใช้เวลาไม่ถึง 1 วินาทีในการเรียกข้อมูล (ความเร็วขึ้นอยู่กับความเร็วของ internet ที่ใช้งาน)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
หวังว่า Hamachi คงช่วยตอบโจทย์ให้กับเหล่านักพัฒนาระบบทั้งหลายได้เป็นอย่างดี&lt;br /&gt;
จนกว่ามันจะเก็บเงิน&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-4800153365188548294?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EYSNCf1KKwRRZQqHvTy36S3H6C4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EYSNCf1KKwRRZQqHvTy36S3H6C4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EYSNCf1KKwRRZQqHvTy36S3H6C4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EYSNCf1KKwRRZQqHvTy36S3H6C4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/I_eAqg7IsKs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/4800153365188548294/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2012/01/vpn-hamachi.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/4800153365188548294?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/4800153365188548294?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/I_eAqg7IsKs/vpn-hamachi.html" title="การใช้งาน HAMACHI ติดตั้ง VPN แบบกล้วยๆ" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-wcgpv0_D_H4/TxkGL8NxCxI/AAAAAAAAAxo/Ygdcx7Wj1vA/s72-c/HAMACHI_01.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2012/01/vpn-hamachi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEASH05fCp7ImA9WhRVF0o.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-6409853333439602826</id><published>2012-01-17T10:42:00.001+07:00</published><updated>2012-01-17T11:14:09.324+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-17T11:14:09.324+07:00</app:edited><title>VB.Net Printing</title><content type="html">&lt;strong&gt;&lt;span style="font-size: x-large;"&gt;ก&lt;/span&gt;&lt;/strong&gt;ารพิมพ์รายงานต่างๆ ผ่านทาง VB.Net สามารถทำได้หลายวิธี เช่น ผ่านทาง Crystal Report หรือ เขียนโปรแกรมสั่งพิมพ์โดยใช้ VB.Net สำหรับบทความนี้จะแนะนำวิธีการเขียนคำสั่ง ซึ่งจะเป็นพื้นฐานในการควบคมการทำงานทางด้านการพิมพ์ในรูปแบบต่างๆ ตามใจปรารถนา ถึงแม้จะเข้าใจยากแต่เมื่อเรียนรู้จนเข้าใจก็จะคุ้มค่าแก่การศึกษา &lt;br /&gt;
สำหรับ .Net ได้จัดเตรียม ออปเจกต์จัดการเกี่ยวกับการพิมพ์ไว้พร้อมแล้ว คือ&amp;nbsp;PrintDocument ซึ่งเก็บไว้ภายใต้ คลาส System.Drawing.Printing &lt;br /&gt;
เพื่อไม่ให้เป็นการเสียเวลา จะขอยกตัวอย่างการพิมพ์รายงาน โดยทำการคิวรีข้อมูลจากตารางภายใต้ฐานข้อมูล SQL Server แล้วพิมพ์ออกมาในรายงานตามต้องการ&lt;br /&gt;
&lt;br /&gt;
ตัวอย่างการเขียนคำสั่งพิมพ์เอกสารด้วย VB.Net&lt;br /&gt;
1. เปิด&amp;nbsp;โปรแกรม Visual Studio .Net&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-6409853333439602826?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5pSzZ67Bpn3BQJQxvALrBA7n0YU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5pSzZ67Bpn3BQJQxvALrBA7n0YU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5pSzZ67Bpn3BQJQxvALrBA7n0YU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5pSzZ67Bpn3BQJQxvALrBA7n0YU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/mK5m2qCT0UE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/6409853333439602826/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2012/01/vbnet-printing.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/6409853333439602826?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/6409853333439602826?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/mK5m2qCT0UE/vbnet-printing.html" title="VB.Net Printing" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2012/01/vbnet-printing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4FSXs7fSp7ImA9WhRWGUw.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-3571023454135373296</id><published>2012-01-07T13:43:00.003+07:00</published><updated>2012-01-07T13:48:38.505+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-07T13:48:38.505+07:00</app:edited><title>IMPORT TEXT FILE INTO SQL SERVER</title><content type="html">นำเข้าข้อมูลเท็กซ์ไฟล์จากภายนอก ใส่ไว้ในตาราง SQL Server&lt;br /&gt;
&lt;br /&gt;
หลายครั้งเรามีความจำเป็นที่จะต้องนำข้อมูลจากภายนอกมาเพิ่มใส่ในตารางบนฐานข้อมูลของ SQL Server สามารถทำได้ไม่ยาก ด้วยคำสั่ง BULK INSERT &lt;br /&gt;
&lt;br /&gt;
เช่น เรามีข้อมูลเท็กซ์ไฟล์ชื่อ CUSTOMER.TXT ที่มีข้อมูลบรรจุอยู่ภายในดังนี้&lt;br /&gt;
&lt;br /&gt;
10001,บริษัท นายก,254/1 ถนนใหญ่ ซอยเล็ก เขตประเทศไทย จังหวัดกรุงเทพฯ&lt;br /&gt;
10002,บริษัท ABC,55 ถนนเล็ก ซอยใหญ่ เขตบางคอแหลม จังหวัดกรุงเทพฯ&lt;br /&gt;
10003,บริษัท Zaดี,2555 ถนนปูน ซอยเล็ก เขตบางโคล่  จังหวัดกรุงเทพฯ&lt;br /&gt;
&lt;br /&gt;
1.ให้สร้างตารางใน SQL Server ตามรูปแบบของข้อมูลข้างต้น ซึ่งประกอบด้วย รหัส,ชื่อบริษัท,ที่อยู่ ดังนี้&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE [dbo].[CUSTOMER](&lt;br /&gt;
[CUSTOMER_NO] [char] (5) NOT NULL ,&lt;br /&gt;
[COMPANY_NAME] [varchar](100) NOT NULL,&lt;br /&gt;
[ADDRESS] [varchar](100) NOT NULL )&lt;br /&gt;
&lt;br /&gt;
2.ทำการเพิ่มข้อมูลเท็กซ์ไฟล์เข้าสู่ตาราง โดยทำผ่านทาง Microsoft Management Studio ผ่านทางหน้าต่าง New Query ดังนี้&lt;br /&gt;
&lt;br /&gt;
BULK&lt;br /&gt;
INSERT [dbo].[CUSTOMER]  &lt;br /&gt;
FROM 'C:\CUSTOMER.TXT'&lt;br /&gt;
WITH&lt;br /&gt;
(&lt;br /&gt;
FIELDTERMINATOR = ',',&lt;br /&gt;
ROWTERMINATOR = '\n'&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
สำหรับคำสั่งทั้งหมด ดูตามตัวอย่างดังภาพ&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-u2ZV8uPgpQg/TwfpfD46-SI/AAAAAAAAAxc/f_-1Uk-tMNs/s1600/bulkinsert.png" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="166" width="320" src="http://4.bp.blogspot.com/-u2ZV8uPgpQg/TwfpfD46-SI/AAAAAAAAAxc/f_-1Uk-tMNs/s320/bulkinsert.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
เทศกาลตรุษจีน ขอให้เฮงๆ รวยๆ&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-3571023454135373296?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/S_UXsrx1s3jIyHYSYhdhH53noOM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S_UXsrx1s3jIyHYSYhdhH53noOM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/S_UXsrx1s3jIyHYSYhdhH53noOM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S_UXsrx1s3jIyHYSYhdhH53noOM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/lKCGqR0T574" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/3571023454135373296/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2012/01/text-sql-server.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/3571023454135373296?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/3571023454135373296?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/lKCGqR0T574/text-sql-server.html" title="IMPORT TEXT FILE INTO SQL SERVER" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-u2ZV8uPgpQg/TwfpfD46-SI/AAAAAAAAAxc/f_-1Uk-tMNs/s72-c/bulkinsert.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2012/01/text-sql-server.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMFRnk7fSp7ImA9WhRWGEs.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-4108527967653843299</id><published>2012-01-06T21:33:00.000+07:00</published><updated>2012-01-06T21:33:37.705+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-06T21:33:37.705+07:00</app:edited><title>การสร้างภาพพาโนรามา</title><content type="html">สอนเขียนโปรแกรมมาหลายตอน ช่วงนี้เลยย้อนมาสอนวิธีการทำภาพพาโนรามาจากภาพถ่ายธรรมดา พร้อมทั้งการทำแอนิเมต ด้วย Adobe Flash คลิกเข้าไปดูแล้วทำตามได้เลย แต่ต้องมี Adobe Photoshop กับ Adobe Flash ด้วยล่ะ&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width="560" height="315" src="http://www.youtube.com/embed/mD_leUSULvs" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-4108527967653843299?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WHE2_Wu4-0lujQu6gSh0zJO4mIM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WHE2_Wu4-0lujQu6gSh0zJO4mIM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WHE2_Wu4-0lujQu6gSh0zJO4mIM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WHE2_Wu4-0lujQu6gSh0zJO4mIM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/-JtA7mB2e4I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/4108527967653843299/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2012/01/blog-post.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/4108527967653843299?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/4108527967653843299?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/-JtA7mB2e4I/blog-post.html" title="การสร้างภาพพาโนรามา" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/mD_leUSULvs/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2012/01/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MAQXg7cSp7ImA9WhRXGUg.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-6951081551160563777</id><published>2011-12-25T08:00:00.013+07:00</published><updated>2011-12-27T11:17:20.609+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-27T11:17:20.609+07:00</app:edited><title>VB.NET Save Image into SQL Server</title><content type="html">บทความนี้ เป็นการนำเสนอวิธีการ การเก็บบันทึกรูปภาพเก็บไว้ในฐานข้อมูล SQL Server ด้วยภาษา Visual Basic.NET &lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;สร้างฐานข้อมูลและตารางสำหรับเก็บข้อมูลรูปภาพ ดังนี้&lt;/u&gt;&lt;br /&gt;
(Create Database and Table)&lt;br /&gt;
&lt;br /&gt;
- ให้ทำการสร้างฐานข้อมูล และตารางใน SQL Server ดังนี้&lt;br /&gt;
&lt;br /&gt;
CREATE DATABASE myData&lt;br /&gt;
GO&lt;br /&gt;
CREATE TABLE [dbo].[tblImage](&lt;br /&gt;
[RowOrder] [int] IDENTITY(1,1) NOT NULL,&lt;br /&gt;
[ImageName] [varchar](100) NULL,&lt;br /&gt;
[Image] [image] NULL,&lt;br /&gt;
CONSTRAINT [PK_tblImage] PRIMARY KEY CLUSTERED &lt;br /&gt;
(&lt;br /&gt;
[RowOrder] ASC&lt;br /&gt;
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]&lt;br /&gt;
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;สร้างฟอร์มบันทึกรูปภาพ&lt;/u&gt;&lt;br /&gt;
(Create WindowsForm)&lt;br /&gt;
1. เปิดโปรแกรม Visual Studio 2010 แล้วทำการสร้าง Project ขึ้นมา จากนั้นทำการสร้างฟอร์ม โดยมี Control ต่าง ๆ ดังภาพ&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/--Xh8JUOgV1c/TvZ2oW9d-DI/AAAAAAAAAu0/bqOLKkNpXRY/s1600/image1.jpg" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="320" width="298" src="http://3.bp.blogspot.com/--Xh8JUOgV1c/TvZ2oW9d-DI/AAAAAAAAAu0/bqOLKkNpXRY/s320/image1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;1.Label         &lt;br /&gt;
&lt;i&gt;(name)&lt;/i&gt; = Label1&lt;br /&gt;
&lt;i&gt;Text&lt;/i&gt; = &lt;br /&gt;
2.PictureBox    &lt;br /&gt;
&lt;i&gt;(name)&lt;/i&gt; = PictureBox1&lt;br /&gt;
SizeMode = PictureBoxSizeMode.StretchImage&lt;br /&gt;
3.Load Picture  &lt;br /&gt;
&lt;i&gt;(name)&lt;/i&gt; = btnLoad&lt;br /&gt;
&lt;i&gt;Text&lt;/i&gt; = Load Picture&lt;br /&gt;
4.Save          &lt;br /&gt;
&lt;i&gt;(name)&lt;/i&gt; = btnSave&lt;br /&gt;
&lt;i&gt;Text&lt;/i&gt; = Save&lt;br /&gt;
5.OpenFileDialog &lt;br /&gt;
&lt;i&gt;(name)&lt;/i&gt; = OpenFileDialog1&lt;br /&gt;
&lt;i&gt;FileName&lt;/i&gt; = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. ให้ทำการ Imports Class เข้ามาใช้งานดังนี้&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Imports System.Data
Imports System.Data.SqlClient
Imports System.IO
&lt;/pre&gt;&lt;br /&gt;
3. ประกาศตัวแปรเพื่อใช้ในฟอร์มดังนี้ โดยประกาศไว้ต่อจากบรรทัด &lt;b&gt;Public Class ชื่อฟอร์ม&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Public Class Form1
    Dim bm As Bitmap
    Dim fs As FileStream
    Dim fsImage As Byte()
...
&lt;/pre&gt;&lt;br /&gt;
4. ให้ทำการเข้าไปเขียนคำสั่งภายใน subroutine ขื่อ btnLoad_Click ของปุ่ม btnLoad ดังนี้&lt;br /&gt;
(คำสั่งในปุ่มนี้ จะเป็นการเปิดไฟล์รูปภาพจากในฮาร์ดดิสก์โดยใช้ OpenFileDialog &lt;br /&gt;
แล้วนำมาแสดงในคอนโทรล PictureBox1 รวมถึงอ่านไฟล์รูปภาพมาเก็บไว้ใน fsImage เพื่อนำไปใช้ในตอนบันทึกที่ปุ่ม Save)&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;With OpenFileDialog1
   .CheckFileExists = True
   .ShowReadOnly = False
   .Filter = "All Files|*.*|Picture Files|*.bmp;*.gif;*.jpg;*.png"
   .FilterIndex = 2
   If .ShowDialog = DialogResult.OK Then
      fs = New FileStream(.FileName.ToString(), FileMode.Open)
      fsImage = New Byte(fs.Length) {}
      fs.Read(fsImage, 0, fs.Length)
      fs.Close()
      bm = Image.FromFile(.FileName.ToString())
      PictureBox1.Image = bm
      Label1.Text = System.IO.Path.GetFileName(.FileName)
  End If
End With
&lt;/pre&gt;&lt;br /&gt;
5. ที่ปุ่ม Save ให้ทำการเข้าไปเขียนคำสั่งภายใต้ Subroutine ชื่อ btnSave_Click ดังนี้&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;If System.IO.File.Exists(Me.OpenFileDialog1.FileName) = False Then
   MessageBox.Show("File Not Found", "Error")
   Exit Sub
Else
   Dim strConn As String = "Data Source=.;Initial Catalog=myData;" &amp; _ 
                           "Integrated Security=SSPI;"
   'strConn ให้เปลี่ยนค่าตามเครื่อง Server ของ SQL Server ที่ติดต่อ
       Dim Conn As New SqlConnection(strConn)
   Dim SqlString As String
   SqlString = "INSERT INTO tblImage(ImageName,Image) " &amp; _
               " VALUES(@ImgName, @Img)"
   Dim cmd As SqlCommand = New SqlCommand(SqlString, Conn)
   Dim ImgName As SqlParameter = New SqlParameter("@ImgName", _
                                 System.Data.SqlDbType.VarChar, 100)
   ImgName.Value = Label1.Text.ToString()
   cmd.Parameters.Add(ImgName)

   Dim Img As SqlParameter = New SqlParameter("@Img", _
                             System.Data.SqlDbType.Image)
   Img.Value = fsImage
   cmd.Parameters.Add(Img)
   Try
      Conn.Open()
      cmd.ExecuteNonQuery()
      Conn.Close()
      MessageBox.Show("Save Image Complete", "Success")
   Catch ex As Exception
      MessageBox.Show(ex.Message.ToString(), "Error")
      Exit Sub
   End Try
End If
&lt;/pre&gt;&lt;br /&gt;
จากนั้นทำการรันฟอร์มที่เราสร้างแล้วทดสอบเปิดไฟล์รูปภาพแล้วทำการบันทึก &lt;br /&gt;
&lt;br /&gt;
... ไว้มาต่อเรื่อง จะดึงภาพจาก SQL Server ออกมาได้อย่างไร ในตอนต่อไป ขอตัวงานช่วงนี้เยอะ .....&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-6951081551160563777?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kXN_KTV3EJxCtVdpxsogWp-V8ko/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kXN_KTV3EJxCtVdpxsogWp-V8ko/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kXN_KTV3EJxCtVdpxsogWp-V8ko/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kXN_KTV3EJxCtVdpxsogWp-V8ko/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/V1KAWh4ZMMg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/6951081551160563777/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2011/12/vbnet-save-image-into-sql-server.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/6951081551160563777?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/6951081551160563777?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/V1KAWh4ZMMg/vbnet-save-image-into-sql-server.html" title="VB.NET Save Image into SQL Server" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/--Xh8JUOgV1c/TvZ2oW9d-DI/AAAAAAAAAu0/bqOLKkNpXRY/s72-c/image1.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2011/12/vbnet-save-image-into-sql-server.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMHR3c9fSp7ImA9WhRTGUw.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-3340559058539183794</id><published>2011-11-10T15:23:00.000+07:00</published><updated>2011-11-10T15:23:56.965+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-10T15:23:56.965+07:00</app:edited><title>Someone Like You (Piano Cover)</title><content type="html">ฟังเพลง Someone Like You เล่นตอนน้ำท่วมจะเป็นอย่างไร ลองคลิกดู&lt;br /&gt;
&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/yUn89M6jeDM" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-3340559058539183794?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YWYdm0G31g6LXNyp-nxqE49uo24/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YWYdm0G31g6LXNyp-nxqE49uo24/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YWYdm0G31g6LXNyp-nxqE49uo24/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YWYdm0G31g6LXNyp-nxqE49uo24/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/QsyJSRjAdQs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/3340559058539183794/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2011/11/someone-like-you-piano-cover.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/3340559058539183794?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/3340559058539183794?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/QsyJSRjAdQs/someone-like-you-piano-cover.html" title="Someone Like You (Piano Cover)" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/yUn89M6jeDM/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2011/11/someone-like-you-piano-cover.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcFRnk4cCp7ImA9WhRTGUw.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-5124054140171784119</id><published>2011-11-10T14:32:00.002+07:00</published><updated>2011-11-10T15:16:57.738+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-10T15:16:57.738+07:00</app:edited><title>เมื่อ Adobe ยุติการพัฒนา Flash บนอุปกรณ์ Mobile</title><content type="html">วันที่ 9 พ.ย. 54 เป็นวันหนึ่งที่ Adobe Flash ได้ประกาศหยุดการพัฒนา Flash ที่ใช้กับ Mobile Web Browser ซึ่งอนาคตก็แน่นอนแล้วว่า มือถือทั้งหลาย หรือ อุปกรณ์ที่ใช้ OS Android (iPad, iPhone เปิดไม่ได้ตั้งแต่แรก) เมื่อเปิด Web Browser ก็คงไม่มี Flash สวย ๆ มาให้เราเห็นอีกต่อไป ซึ่งก็คงต้องปล่อยให้เป็นหน้าที่ของ HTML5 เป็นตัวชูโรงสำหรับอนาคตข้างหน้า&lt;br /&gt;
เหตุที่เป็นเช่นนี้ ก็เนื่องมาจากเอกสาร Flash กินทรัพยากรของเครื่องมากไป แล้ว Flash จะทำอย่างไรดี การพัฒนาที่ทาง Adobe บอกไว้ว่า Flash จะพัฒนาให้ใช้ได้บน Mobile ที่เป็น Mobile Application เท่านั้น เพราะถ้าทำ  ให้ใช้ได้กับ Web ด้วยก็คงต้องทุ่มสรรพกำลังจนเกินเหตุ ได้ไม่คุ้มเสีย เลิกดีกว่า &lt;br /&gt;
สาวก Flash ที่พัฒนาบน Web ต่อไปก็คงต้องปรับตัว ในอนาคตเมื่อ Mobile Web Browser ไม่ support แล้วคนที่จ้างทำ Flash ลงหน้าเว็บ ฤาจะให้ใช้ Flash ทำเฉพาะ Web browser บน Desktop ก็กระไรอยู่ คงไม่มีใครมาจาก 2 ต่อ ทั้งบน web browser บน Windows และ Mobile ซึ่งใช้เครื่องมือคนละตัว ใครที่เขียน Web ด้วย Flash ก็คงต้องปรับไปใช้ HTML5 ในไม่ช้า แต่ทาง Adobe ก็ไม่ได้ทิ้ง Flash หันไปทางด้าน Mobile Application แทน โดยผ่านทาง Adobe Air ดังนั้น ใครใช้ Flash ใช้ Action Script ก็คงยังไม่หมดหนทางเสียทีเดียว ก็พัฒนาเป็น Mobile Application ถ้าท่านใดมี Adobe Flash 5 หรือ 5.5 ขึ้นไปก็สามารถเขียน Mobile Application ได้เลยไว้ว่าง ๆ เรามาเขียนกัน&lt;br /&gt;
&lt;br /&gt;
โลกยังดำเนินต่อไป มีเกิดมีดับ มีรุ่งมีร่วง ช่วงนี้น้ำท่วม มีท่วมก็มีลด &lt;br /&gt;
ถึงแม้ว่า Flash จะไม่สามารถใช้กับ Mobile Web Browser แต่เราใช้กับงานอื่นได้อีกเยอะ&lt;br /&gt;
ช่วงหลัง ผู้เขียนมุ่งไปทาง ตาดูหูฟัง นั่งทำตาม เลยจัดทำเป็นวีดีโอช่วยเรียนรู้ ว่าง ๆ ก็เปิดดูได้ มี 2 เรื่อง &lt;br /&gt;
(จริง ๆ มีทำไว้มากกว่านี้ลองหาดู)&lt;br /&gt;
วีดีโอ แรก มาเขียนเกมเล่น ด้วย Flash กันดีกว่า&lt;br /&gt;
&lt;iframe width="640" height="360" src="http://www.youtube.com/embed/miZZoQzvQ3g" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
วีดีโอ ที่สอง มาทำโปรแกรมเปิดไฟล์วีดีโอ ไว้เผื่อทำวีดีโอช่วยสอนใส่แผ่นซีดี แจกจ่ายได้&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width="640" height="360" src="http://www.youtube.com/embed/QRTlMGZgfY8" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
บ้านใครน้ำท่วมก็ขอให้น้ำลดไว ๆ&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-5124054140171784119?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DFFYk6pPTKOPcEfteGqCzTQvYtg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DFFYk6pPTKOPcEfteGqCzTQvYtg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DFFYk6pPTKOPcEfteGqCzTQvYtg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DFFYk6pPTKOPcEfteGqCzTQvYtg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/FQkWvTqxhww" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/5124054140171784119/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2011/11/adobe-flash-mobile.html#comment-form" title="2 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/5124054140171784119?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/5124054140171784119?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/FQkWvTqxhww/adobe-flash-mobile.html" title="เมื่อ Adobe ยุติการพัฒนา Flash บนอุปกรณ์ Mobile" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/miZZoQzvQ3g/default.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2011/11/adobe-flash-mobile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQHQnY7cCp7ImA9WhdXEUo.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-7445056933024527670</id><published>2011-08-24T14:12:00.002+07:00</published><updated>2011-08-24T14:18:53.808+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-24T14:18:53.808+07:00</app:edited><title>เรียนภาษาอังกฤษ</title><content type="html">เว็บไซต์เรียนภาษาอังกฤษ  &lt;br /&gt;
มีให้เราเรียนเยอะแยะมากมาย เรียนวันละนิด รับรองเก่งแน่ ๆ &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.lextutor.ca/"&gt;http://www.lextutor.ca/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ด้านล้างก็เป็นแบบทดสอบ ดูซิว่าเราเก่งขนาดไหนแล้ว&lt;br /&gt;
&lt;a href="http://www.er.uqam.ca/nobel/r21270/levels/"&gt;http://www.er.uqam.ca/nobel/r21270/levels/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-7445056933024527670?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9E2xqVtmdEr63aTyCWLN2FsIMaM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9E2xqVtmdEr63aTyCWLN2FsIMaM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9E2xqVtmdEr63aTyCWLN2FsIMaM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9E2xqVtmdEr63aTyCWLN2FsIMaM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/gqV0Gu1rw1Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/7445056933024527670/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2011/08/blog-post.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/7445056933024527670?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/7445056933024527670?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/gqV0Gu1rw1Y/blog-post.html" title="เรียนภาษาอังกฤษ" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2011/08/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04ARH8zeCp7ImA9WhZbEUg.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-2935697592771773793</id><published>2011-06-15T22:15:00.002+07:00</published><updated>2011-06-15T22:32:25.180+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-15T22:32:25.180+07:00</app:edited><title>ของดี มีอยู่ใน Visual Studio Gallery</title><content type="html">สามารถเข้าไป ดาวน์โหลดได้ที่  &lt;a href="http://visualstudiogallery.msdn.microsoft.com/"&gt;http://visualstudiogallery.msdn.microsoft.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ที่ codeplex รวมไว้หลากหลาย เข้าได้ที่ &lt;a href="http://1code.codeplex.com/wikipage?title=All-In-One%20Code%20Framework%20Sample%20Catalog"&gt;http://1code.codeplex.com/wikipage?title=All-In-One%20Code%20Framework%20Sample%20Catalog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-2935697592771773793?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/658fvcQb82BX_oFskL3deBAm3d4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/658fvcQb82BX_oFskL3deBAm3d4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/658fvcQb82BX_oFskL3deBAm3d4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/658fvcQb82BX_oFskL3deBAm3d4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/5UEavWX2in8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/2935697592771773793/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2011/06/visual-studio-gallery.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/2935697592771773793?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/2935697592771773793?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/5UEavWX2in8/visual-studio-gallery.html" title="ของดี มีอยู่ใน Visual Studio Gallery" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2011/06/visual-studio-gallery.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04BSX4zfCp7ImA9WhZbEUk.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-6752792118913082529</id><published>2011-06-15T21:59:00.000+07:00</published><updated>2011-06-15T21:59:18.084+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-15T21:59:18.084+07:00</app:edited><title>upgrade Visual Studio 2010</title><content type="html">เมื่อเราไป ดาวน์โหล Visual Studio 2010 รุ่นทดลอง มาใช้ได้สักพัก แล้วเกิดติดใจ ดังนั้นต้องไปซื้อ License มา เมื่อได้ product key มาแล้ว ต้องการจะ upgrade จากรุ่นทดลองเป็นรุ่นจริง สามารถทำได้ดังนี้&lt;br /&gt;
1. ทำการเปิดแฟ้ม setup.sdb ที่เก็บไว้ในโฟล์ดเดอร์ของโปรแกรม (C:\Program Files\Microsoft Visual Studio 10.0\setup.sdb) ด้วยโปรแกรม notepad &lt;br /&gt;
2. หาบรรทัด [Product Key] แล้วแก้ product key  ที่อยู่ใต้ section นี้ เป็นตัวที่ได้ซื้อมา&lt;br /&gt;
3. ทำการบันทึกไฟล์ แต่ถ้าหากบันทึกไม่ได้ ก็บันทึกไว้ที่อื่น แล้วค่อยใช้ windows expoler ลากไปวางแทนไฟล์เดิมที่ในโฟล์ดเดอร์ของโปรแกรม&lt;br /&gt;
4. ที่โฟล์ดเดอร์ของโปรแกรม หาไฟล์ setup.exe เรียกไฟล์นี้ขึ้นมา ในนี้จะมีให้ใส่ product key ก็เอาตัวที่ได้ซื้อมาใส่ไปอีกครั้ง เป็นอันเสร็จ&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-6752792118913082529?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bCNP0BgQ8WnoiDZLytkQY9wosy0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bCNP0BgQ8WnoiDZLytkQY9wosy0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bCNP0BgQ8WnoiDZLytkQY9wosy0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bCNP0BgQ8WnoiDZLytkQY9wosy0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/Q4QO8s4j0GA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/6752792118913082529/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2011/06/upgrade-visual-studio-2010.html#comment-form" title="1 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/6752792118913082529?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/6752792118913082529?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/Q4QO8s4j0GA/upgrade-visual-studio-2010.html" title="upgrade Visual Studio 2010" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2011/06/upgrade-visual-studio-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcFQnY8eSp7ImA9WhZWEEw.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-1061450378879241558</id><published>2011-05-06T16:09:00.018+07:00</published><updated>2011-05-10T15:26:53.871+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-10T15:26:53.871+07:00</app:edited><title>app.config เก็บอะไรได้หลายอย่าง</title><content type="html">ใน VB.NET App.Config เอาไว้ทำอะไร คงมีคำถามมากมาย ???&lt;br /&gt;
เอากันตรงตัวเลย App = Application + Config = Configuration&lt;br /&gt;
เว้ากันซื่อ ๆ ก็ เอาไว้กำหนดค่าต่างๆของแอพพลิเคชัน เพื่อเอาไว้ใช้งานในระบบงาน&lt;br /&gt;
&lt;br /&gt;
เช่น การกำหนดค่าต่าง ๆ เช่น กำหนดค่าคงที่, กำหนด Connectionstring เป็นต้น&lt;br /&gt;
&lt;br /&gt;
เราสามารถสร้างไฟล์ app.config ในโปรเจกต์ ได้โดย&lt;br /&gt;
1. เลือกเมนู Project &lt;br /&gt;
2. เลือก Add New Item...&lt;br /&gt;
3. ที่รายการ Common Items เลือก General แล้วเลือกรายการ Application Configuration File&lt;br /&gt;
ที่ช่อง Name จะมีชื่อ app.config ให้คลิก OK&lt;br /&gt;
&lt;br /&gt;
เราจะได้ไฟล์ ชื่อ app.config ปรากฎอยู่ในหน้าต่าง Solution Explorer&lt;br /&gt;
ให้ทำการเปิดขึ้นมาดู แล้วเพิ่มโค้ด ภายใต้บล๊อกคำสั่ง &amp;lt;appSettings&amp;gt; ... &amp;lt;/appSettings&amp;gt; ดังนี้&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;lt;configuration&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;lt;appSettings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add key=&lt;span style="color: #cc0000;"&gt;"name"&lt;/span&gt; value="Kasem"/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;add key=&lt;span style="color: #cc0000;"&gt;"surname"&lt;/span&gt; value="Kamolchaipisit"/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/appSettings&amp;gt; &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&lt;br /&gt;
หากเราต้องการเรียกใช้งานค่าจากไฟล์ app.config &lt;br /&gt;
ให้ทำการ Imports System.Configuration ก่อน เช่น&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;' ประกาศไว้ต้นโปรแกรม
Imports System.Configuration
' คำสั่งในโปรแกรม
' ...

' การเรียกใช้งาน
Dim appSet As New AppSettingsReader()
' หาต้องการดึงค่าใน app.config มาเก็บไว้ในตัวแปร หรือนำไปใช้ตามต้องการ เขียนคำสั่ง ดังนี้
Dim myName , mySurname As String 
MyName = appSet.GetValue(&lt;span style="color: #cc0000;"&gt;"name"&lt;/span&gt;, GetType(String))&amp;nbsp; 

&lt;span style="color: #cc0000;"&gt;' name คือชื่อของ key ใน app.config&lt;/span&gt;
MySurname = appSet.GetValue(&lt;span style="color: #cc0000;"&gt;"surname"&lt;/span&gt;, GetType(String))

&lt;span style="color: #cc0000;"&gt;' surname คือชื่อของ key ใน app.config&lt;/span&gt;
Messagebox.Show(MyName &amp;amp; "&amp;nbsp; " &amp;amp; MySurName)&amp;nbsp; ' จะปรากฎชื่อ Kasem Kamolchaipisit

&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
หลายคนที่เขียนโปรแกรมจะประกาศ Connection String ไว้ในฟอร์มที่ทำงานโดยตรง ซึ่งมีข้อเสีย ถ้าต้องการเปลี่ยนค่าของ Connection String ใหม่ ก็ต้องแก้ไขฟอร์มทุกฟอร์มใหม่ สำหรับ app.config ก็ให้เราสามารถกำหนดค่าของ Connection String ได้แล้วนำไปใช้ภายใต้ฟอร์มต่าง ๆ ดังนั้นหากต้องการแก้ไขค่า ก็สามารถทำได้ใน app.config ที่เดียวซึ่งก็จะทำให้ทุกฟอร์มสามารถเรียกใช้ได้ทันที่&lt;br /&gt;
สำหรับการประกาศ Connection String ภายใต้ไฟล์ app.config เราจะเขียนไว้ภายใต้บล๊อกคำสั่ง &amp;lt;connectionStrings&amp;gt;...&amp;lt;/connectionStrings&amp;gt; เช่น&lt;br /&gt;
&lt;br /&gt;
&amp;lt;connectionStrings&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;add name="myConnect" connectionString=""Data Source=ชื่อเซิร์ฟเวอร์;Initial Catalog=ชื่อฐานข้อมูล;Integrated Security=True" providerName="System.Data.SqlClient" /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/connectionStrings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
จากนั้นที่ฟอร์มแต่ะลฟอร์ม เมื่อต้องการเชื่อมต่อฐานข้อมูลแล้วเรียกใช้งาน Connection String ก็ให้ทำการ Imports คลาส ดังนี้&lt;br /&gt;
&lt;br /&gt;
Imports System.Configuration  &lt;br /&gt;
&lt;br /&gt;
จากนั้นเขียนคำสั่งเรียกใช้งาน connection string โดยเขียนไว้หลังจาก Public Class ชื่อ Class  เช่น&lt;br /&gt;
&lt;br /&gt;
Imports System.Data&lt;br /&gt;
Imports System.Data.SqlClient&lt;br /&gt;
Imports System.Data.Configuration&lt;br /&gt;
&lt;br /&gt;
Public Class Form1&lt;br /&gt;
         Dim cs  As String =  ConfigurationSettings.AppSettings("myConnect")&lt;br /&gt;
&lt;br /&gt;
         Private Sub Form1_Load .....&lt;br /&gt;
               ' เขียนคำสั่งติดต่อตามต้องการ&lt;br /&gt;
         End Sub&lt;br /&gt;
End Class&lt;br /&gt;
&lt;br /&gt;
สวัสดี&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-1061450378879241558?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FNWV98PJDlLb2SGN6SliXcMbR8E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FNWV98PJDlLb2SGN6SliXcMbR8E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FNWV98PJDlLb2SGN6SliXcMbR8E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FNWV98PJDlLb2SGN6SliXcMbR8E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/2TylgSP5QU0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/1061450378879241558/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2011/05/appconfig.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/1061450378879241558?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/1061450378879241558?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/2TylgSP5QU0/appconfig.html" title="app.config เก็บอะไรได้หลายอย่าง" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2011/05/appconfig.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcMQHg6eCp7ImA9Wx9UE0Q.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-731580738192703801</id><published>2011-02-10T18:43:00.007+07:00</published><updated>2011-02-11T10:14:41.610+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-11T10:14:41.610+07:00</app:edited><title>VB.Net กับ Transaction</title><content type="html">Transaction เป็นกลุ่มคำสั่งที่สร้างขึ้นเพื่อการประมวลผลข้อมูล โดยที่กลุ่มคำสั่งของทรานแซกชันถือว่าเป็นหน่วยของงานที่ไม่สามารถแบ่งแยกออกเป็นส่วนย่อยได้อีก การทำงานจะทำตั้งแต่ต้นจนเสร็จสิ้นภายใต้หน่วยของทรานแซกชันนั้น หากเกิดเหตุอันไม่คาดคิดขณะประมวลผลคำสั่ง เช่น ระเบิดภูเขา เผากระท่อม ไฟดับ สายสัญญาณขาดหาย โปรแกรมผิดพลาด .... แล้วมีผลมาทำให้คำสั่งหยุดกลางครัน การทำงานที่ผ่านมาตั้งแต่เริ่มทำ Transaction ก็จะกลับสู่สภาพเดิมก่อนที่จะมีการทำ Transaction&lt;br /&gt;
&lt;br /&gt;
ตัวอย่าง เช่น การโอนเงินผ่านธนาคาร จาก นาย ก.&amp;nbsp; ไปให้ นาย ข. ถ้าเรามองการทำงานเวลาเราไปโอนเงินผ่านตู้ ATM เราจะเห็นว่ามีการทำงานแค่ครั้งเดียว คือ นาย ก. ไปโอนเงิน (เป็นการมองในระดับ High Level) แต่ในอีกมุมนึง การทำงานของโปรแกรม ซึ่งเป็นส่วนของการประมวลผลคำสั่งและปรับปรุงข้อมูลลงฐานข้อมูล จะเกิดขั้นตอนการปรับปรุงข้อมูลอย่างน้อย 2 คำสั่ง (มองในระดับ Low Level) คือ คำสั่งแรก จะต้องปรับปรุงข้อมูลของนาย ก. โดยลดยอดลง&amp;nbsp; คำสั่งที่สอง จะเป็นการปรับปรุงข้อมูลโดยการเพิ่มเงินในบัญชีของนาย ข. ลักษณะนี้ เราจำเป็นต้องมีการทำ Transaction เพื่อป้องกันเหตุสุดวิสัยที่อาจจะทำให้การปรับปรุงข้อมูลข้างต้นไม่ให้เกิดข้อผิดพลาดในการปรับปรุงข้อมูลเกิดขึ้น&lt;br /&gt;
&lt;br /&gt;
คุณสมบัติของทรานแซกชัน ประกอบด้วย &lt;br /&gt;
1. Atomicity คือ ความเป็นหนึ่งเดียว : การทำงานของกลุ่มคำสั่งภายใต้ทรานแซกชันจะถูกประมวลผลเสมือนเป็นคำสั่งเดียวกัน&lt;br /&gt;
2. Consistency คือ ความถูกต้องของข้อมูล : การทำงานของทรานแซกชันไม่ว่าจะสำเร็จหรือล้มเหลว ข้อมูลจะต้องสอดคล้องกันเสมอ&lt;br /&gt;
3. Isolation คือ การทำงานที่เป็นอิสระแกกัน : การทำงานของทรานแซกซันแต่ละทรานแซกชันจะเป็นอิสระจากกัน ข้อมูลที่ถูกปรับปรุงในทรานแซกชันหนึ่งจะไม่มีผลกันอีกทรานแซกชันหนึ่ง&lt;br /&gt;
4. Durability คือ ความคงอยู่ : ข้อมูลทั้งหมดจะคงอยู่หลังจากผ่านการคอมมิตทรานแซกชันแล้ว (commit transaction) ไม่ว่าจะเกิดเหตุการณ์ ระเบิดภูเขา เผากระท่อม หรืออื่น ๆ ก็ตาม&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ตัวอย่าง&lt;/b&gt; การเขียนคำสั่งจัดการ Transaction ด้วยภาษา VB.Net &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ให้ทำการสร้างฐานข้อมูลภายใต้ SQL Server 2008 และตารางข้อมูล พร้อมทั้งเพิ่มข้อมูลเข้าสู่ตาราง ดังนี้ (เปิดหน้าต่าง New Query ใน SQL Server 2008 แล้วป้อนคำสั่งตามตัวอย่างด้านล่าง)&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;CREATE DATABASE myDATA
GO

CREATE TABLE tblBankAccount (
          [ACC_NO] [varchar](10) NOT NULL PRIMARY KEY,
          [ACC_NAME] [varchar](50) NULL,
          [AMOUNT] [money])
GO

INSERT INTO tblBankAccount (ACC_NO,ACC_NAME,AMOUNT) 
                               VALUES('111','Kasem',50000)
INSERT INTO tblBankAccount (ACC_NO,ACC_NAME,AMOUNT) 
                               VALUES('222','Mesak',100)
&lt;/pre&gt;&lt;br /&gt;
ทำการเขียนโปรแกรมด้วย VB.Net&lt;br /&gt;
&lt;br /&gt;
1. เปิด Visual Studio 20xx จากนั้นคลิกเลือก New Project....&lt;br /&gt;
เลือก Visual Basic -&amp;gt; Windows -&amp;gt; Windows Forms Application&lt;br /&gt;
ที่ช่อง Name ป้อน&amp;nbsp; myTransaction&lt;br /&gt;
จากนั้นคลิกปุ่ม OK&lt;br /&gt;
&lt;br /&gt;
2. ที่ฟอร์ม ให้เพิ่มคอนโทร Button1 และ DataGridView ตามตัวอย่าง ดังภาพ&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-guFU-Cnio2k/TVSY7VPMYyI/AAAAAAAAAlI/zcnGuLrJ3xY/s1600/trans01.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="251" src="http://3.bp.blogspot.com/-guFU-Cnio2k/TVSY7VPMYyI/AAAAAAAAAlI/zcnGuLrJ3xY/s400/trans01.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. ให้ดับเบิลคลิกที่ฟอร์ม หรือ ปุ่ม Button1 แล้วป้อนคำสั่ง ดังนี้&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Imports System.Data
Imports System.Data.SqlClient

Public Class Form1
    Dim strConn As String = "Data Source=.\SQLEXPRESS;Initial Catalog=myData;Integrated Security=SSPI;"
    'Data Source เปลี่ยนตามเครื่องที่ติดต่อ
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Button1.Text = "คลิกเพื่อปรับปรุงยอดโอนเงิน"
        Button1.Width = 200
        DisplayData()
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Using objCS = New SqlConnection(strConn)
            objCS.Open()
            'คำสั่งจัดการ Transaction 
            Dim nTR As SqlTransaction
            nTR = objCS.BeginTransaction
            Try
                'ปรับปรุงข้อมูลชุดแรก ภายใต้ทรานแซกชัน nTR
                Dim strSQL1 As String = "UPDATE tblBankAccount SET Amount = Amount - 100 WHERE Acc_no = '111'"
                Dim objSQL1 As New SqlCommand(strSQL1, objCS, nTR)
                objSQL1.ExecuteNonQuery()

                'ปรับปรุงข้อมูลชุดที่สอง ภายใต้ทรานแซกชัน nTR
                Dim strSQL2 As String = "UPDATE tblBankAccount SET Amount = Amount + 100 WHERE Acc_no = '222'"
                Dim objSQL2 As New SqlCommand(strSQL2, objCS, nTR)
                objSQL2.ExecuteNonQuery()

                'เมื่อข้อมูลถูกปรับปรุงทั้งหมดเรียบร้อยแล้วทำการ คอมมิตทรานแซกชัน
                nTR.Commit()
            Catch ex As Exception
                'หากเกิดข้อผิดพลาก ให้ทำการโรลแบ็ก 
                nTR.Rollback()
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK)
            End Try
        End Using
        DisplayData()
    End Sub

    Sub DisplayData()
        ' นำข้อมูลจากตาราง tblBankAccount มาแสดงในกริด
        Using objCS = New SqlConnection(strConn)
            Dim objDS As New DataSet()
            Dim objDA = New SqlDataAdapter()
            objDA.SelectCommand = New SqlCommand("SELECT * FROM tblBankAccount", objCS)
            objDS.Clear()
            objDA.Fill(objDS, "tblBankAccount")
            DataGridView1.DataSource = objDS.Tables(0)
        End Using
    End Sub

End Class

&lt;/pre&gt;&lt;br /&gt;
4. จากนั้นกดปุ่ม F5 เพื่อทำการ Run แล้วลองทดสอบ ตามภาพ&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-iZluCfCkg1U/TVSngiEToVI/AAAAAAAAAlM/Cy-8BsfmoGg/s1600/trans02.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://2.bp.blogspot.com/-iZluCfCkg1U/TVSngiEToVI/AAAAAAAAAlM/Cy-8BsfmoGg/s400/trans02.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ข้อควรระวัง&lt;/b&gt; การใช้ทรานแซกชันระบบฐานข้อมูลจะทำการล็อกตารางที่อยู่ภายใต้ทรานแซกชัน ดังนั้นเวลาใช้ควรทำให้เสร็จในคราวเดียวกัน อย่าเปิดทรานแซกชันค้างไว้ โดยไม่ทำการ commit หรือ rollback&lt;br /&gt;
&lt;br /&gt;
ขอส่งกำลังใจให้กับทหารกล้า ที่ปกป้องประเทศ ทุก ๆ ท่าน&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-731580738192703801?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cfHXYHICtPQp6RtdpjEiM3JV5Hg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cfHXYHICtPQp6RtdpjEiM3JV5Hg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cfHXYHICtPQp6RtdpjEiM3JV5Hg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cfHXYHICtPQp6RtdpjEiM3JV5Hg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/ss0KmiU7US4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/731580738192703801/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2011/02/vbnet-transaction.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/731580738192703801?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/731580738192703801?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/ss0KmiU7US4/vbnet-transaction.html" title="VB.Net กับ Transaction" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-guFU-Cnio2k/TVSY7VPMYyI/AAAAAAAAAlI/zcnGuLrJ3xY/s72-c/trans01.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2011/02/vbnet-transaction.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEHQH0yeSp7ImA9Wx9VF0k.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-2467891327161737656</id><published>2011-02-03T21:15:00.014+07:00</published><updated>2011-02-03T22:57:11.391+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-03T22:57:11.391+07:00</app:edited><title>VB.Net Google Translator</title><content type="html">Google ได้ทำการวิจัยและผลิตผลงานออกมาให้เราใช้งานอย่างมากมาย แถมยังได้สร้าง API สำหรับผลงานที่ผลิตขึ้นมาซึ่งมีมากมาย สำหรับบทความนี้ก็จะยกตัวอย่าง API ของตัวแปลภาษา (Google Translate) ซึ่งใช้แปลภาษาต่าง ๆ&amp;nbsp; เพื่อให้เราทั้งหลายนำไปเขียนโปรแกรมต่อยอด ซึ่งก็ไม่มีอะไซับซ้อน&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Download API ของ Google Translate&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
เราต้องเข้าไปทำการดาวน์โหลด API มาเก็บไว้ที่เครื่องเราก่อน ที่เว็บไซต์ &lt;a href="http://code.google.com/p/google-api-for-dotnet/downloads/list"&gt;http://code.google.com/p/google-api-for-dotnet/downloads/list&lt;/a&gt; จะมี API ให้เลือกหลายรุ่น แนะนำให้ download ไฟล์ชื่อ&amp;nbsp; &lt;br /&gt;
&lt;table border="0" cellpadding="2" cellspacing="0" class="results" id="resultstable"&gt;&lt;tbody&gt;
&lt;tr class=" hover"&gt;&lt;td class="vt id col_0"&gt;&lt;a href="http://code.google.com/p/google-api-for-dotnet/downloads/detail?name=GoogleTranslateAPI_0.4_alpha.zip&amp;amp;can=2&amp;amp;q=" style="white-space: nowrap;"&gt;GoogleTranslateAPI_0.4_alpha.zip    &lt;/a&gt;  &lt;/td&gt;                    &lt;td class="vt col_1" width="100%"&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;table border="0" cellpadding="2" cellspacing="0" class="results" id="resultstable"&gt;&lt;tbody&gt;
&lt;tr class=" hover"&gt;&lt;td class="vt col_1" width="100%"&gt;จากนั้นทำการแตกไฟล์ ออกมาไว้ที่ floder ที่ต้องการ (แล้วจำไว้ด้วยว่าเก็บไว้ที่ไหน)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;เขียนโปรแกรมด้วย VB.Net&lt;/b&gt;&lt;br /&gt;
1. เปิด Visual Studio 20xx จากนั้นคลิกเลือก New Project....&lt;br /&gt;
เลือก Visual Basic -&amp;gt; Windows -&amp;gt; Windows Forms Application&lt;br /&gt;
ที่ช่อง Name ป้อน&amp;nbsp; GooPlae&amp;nbsp; (อ่านว่า กูแปล)&lt;br /&gt;
จากนั้นคลิกปุ่ม OK&lt;br /&gt;
&lt;br /&gt;
2. ทำการ Add Reference โดยไปที่เมนู Project -&amp;gt; Add Reference....&lt;br /&gt;
ที่หน้าต่าง Add Reference ให้คลิกที่แทป&amp;nbsp; Browse&lt;br /&gt;
แล้วเลือก GoogleTranslateAPI.dll ที่เรา Download&amp;nbsp; และทำการ Unzipไว้ตอนแรก&lt;br /&gt;
(จะเก็บอยู่ภายใต้ Floder ที่เรา Unzip จะอยู่ที่ bin -&amp;gt; DotNet)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_43-jGEeBoI4/TUrNA7etHwI/AAAAAAAAAlA/1AMP5KGIGYo/s1600/GooPlae03.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="317" src="http://4.bp.blogspot.com/_43-jGEeBoI4/TUrNA7etHwI/AAAAAAAAAlA/1AMP5KGIGYo/s400/GooPlae03.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. ที่ Form1 ให้เพิ่มคอนโทรล ลงในฟอร์ม ดังภาพ&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_43-jGEeBoI4/TUrK69qhihI/AAAAAAAAAk8/HtqitF138X8/s1600/GooPlae02.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_43-jGEeBoI4/TUrK69qhihI/AAAAAAAAAk8/HtqitF138X8/s400/GooPlae02.png" width="377" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&amp;nbsp;4. ทำการเขียนคำสั่ง โดย double click ที่ฟอร์ม แล้วป้อนคำสั่งดังนี้&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Imports Google.API.Translate
Imports System.Data

Public Class Form1
    Private gooplae1 As New TranslateClient("")
    Private dt As New Data.DataTable("FromCountry")
    Private dt1 As New Data.DataTable("ToCountry")


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        dt.Columns.Add("CountryCode", GetType(System.String))
        dt.Columns.Add("CountryName", GetType(System.String))

        dt.Rows.Add(New Object() {"af", "AFRIKAANS"})
        dt.Rows.Add(New Object() {"sq", "ALBANIAN"})
        dt.Rows.Add(New Object() {"am", "AMHARIC"})
        dt.Rows.Add(New Object() {"ar", "ARABIC"})
        dt.Rows.Add(New Object() {"hy", "ARMENIAN"})
        dt.Rows.Add(New Object() {"az", "AZERBAIJANI"})
        dt.Rows.Add(New Object() {"eu", "BASQUE"})
        dt.Rows.Add(New Object() {"be", "BELARUSIAN"})
        dt.Rows.Add(New Object() {"bn", "BENGALI"})
        dt.Rows.Add(New Object() {"bh", "BIHARI"})
        dt.Rows.Add(New Object() {"br", "BRETON"})
        dt.Rows.Add(New Object() {"bg", "BULGARIAN"})
        dt.Rows.Add(New Object() {"my", "BURMESE"})
        dt.Rows.Add(New Object() {"ca", "CATALAN"})
        dt.Rows.Add(New Object() {"chr", "CHEROKEE"})
        dt.Rows.Add(New Object() {"zh", "CHINESE"})
        dt.Rows.Add(New Object() {"zh-CN", "CHINESE_SIMPLIFIED"})
        dt.Rows.Add(New Object() {"zh-TW", "CHINESE_TRADITIONAL"})
        dt.Rows.Add(New Object() {"co", "CORSICAN"})
        dt.Rows.Add(New Object() {"hr", "CROATIAN"})
        dt.Rows.Add(New Object() {"cs","CZECH"})
        dt.Rows.Add(New Object() {"dv", "DHIVEHI"})
        dt.Rows.Add(New Object() {"nl", "DUTCH"})
        dt.Rows.Add(New Object() {"en", "ENGLISH"})
        dt.Rows.Add(New Object() {"eo", "ESPERANTO"})
        dt.Rows.Add(New Object() {"et", "ESTONIAN"})
        dt.Rows.Add(New Object() {"fo", "FAROESE"})
        dt.Rows.Add(New Object() {"tl", "FILIPINO"})
        dt.Rows.Add(New Object() {"fi", "FINNISH"})
        dt.Rows.Add(New Object() {"fr", "FRENCH"})
        dt.Rows.Add(New Object() {"fy", "FRISIAN"})
        dt.Rows.Add(New Object() {"gl", "GALICIAN"})
        dt.Rows.Add(New Object() {"ka", "GEORGIAN"})
        dt.Rows.Add(New Object() {"de", "GERMAN"})
        dt.Rows.Add(New Object() {"el", "GREEK"})
        dt.Rows.Add(New Object() {"gu", "GUJARATI"})
        dt.Rows.Add(New Object() {"ht", "HAITIAN_CREOLE"})
        dt.Rows.Add(New Object() {"iw", "HEBREW"})
        dt.Rows.Add(New Object() {"hi", "HINDI"})
        dt.Rows.Add(New Object() {"hu", "HUNGARIAN"})
        dt.Rows.Add(New Object() {"is", "ICELANDIC"})
        dt.Rows.Add(New Object() {"id", "INDONESIAN"})
        dt.Rows.Add(New Object() {"iu", "INUKTITUT"})
        dt.Rows.Add(New Object() {"ga", "IRISH"})
        dt.Rows.Add(New Object() {"it", "ITALIAN"})
        dt.Rows.Add(New Object() {"ja", "JAPANESE"})
        dt.Rows.Add(New Object() {"jw", "JAVANESE"})
        dt.Rows.Add(New Object() {"kn", "KANNADA"})
        dt.Rows.Add(New Object() {"kk", "KAZAKH"})
        dt.Rows.Add(New Object() {"km", "KHMER"})
        dt.Rows.Add(New Object() {"ko", "KOREAN"})
        dt.Rows.Add(New Object() {"ku", "KURDISH"})
        dt.Rows.Add(New Object() {"ky", "KYRGYZ"})
        dt.Rows.Add(New Object() {"lo", "LAO"})
        dt.Rows.Add(New Object() {"la", "LATIN"})
        dt.Rows.Add(New Object() {"lv", "LATVIAN"})
        dt.Rows.Add(New Object() {"lt", "LITHUANIAN"})
        dt.Rows.Add(New Object() {"lb", "LUXEMBOURGISH"})
        dt.Rows.Add(New Object() {"mk", "MACEDONIAN"})
        dt.Rows.Add(New Object() {"ms", "MALAY"})
        dt.Rows.Add(New Object() {"ml", "MALAYALAM"})
        dt.Rows.Add(New Object() {"mt", "MALTESE"})
        dt.Rows.Add(New Object() {"mi", "MAORI"})
        dt.Rows.Add(New Object() {"mr", "MARATHI"})
        dt.Rows.Add(New Object() {"mn", "MONGOLIAN"})
        dt.Rows.Add(New Object() {"ne", "NEPALI"})
        dt.Rows.Add(New Object() {"no", "NORWEGIAN"})
        dt.Rows.Add(New Object() {"oc", "OCCITAN"})
        dt.Rows.Add(New Object() {"or", "ORIYA"})
        dt.Rows.Add(New Object() {"ps", "PASHTO"})
        dt.Rows.Add(New Object() {"fa", "PERSIAN"})
        dt.Rows.Add(New Object() {"pl", "POLISH"})
        dt.Rows.Add(New Object() {"pt", "PORTUGUESE"})
        dt.Rows.Add(New Object() {"pt-PT", "PORTUGUESE_PORTUGAL"})
        dt.Rows.Add(New Object() {"pa", "PUNJABI"})
        dt.Rows.Add(New Object() {"qu", "QUECHUA"})
        dt.Rows.Add(New Object() {"ro", "ROMANIAN"})
        dt.Rows.Add(New Object() {"ru", "RUSSIAN"})
        dt.Rows.Add(New Object() {"sa", "SANSKRIT"})
        dt.Rows.Add(New Object() {"gd", "SCOTS_GAELIC"})
        dt.Rows.Add(New Object() {"sr", "SERBIAN"})
        dt.Rows.Add(New Object() {"sd", "SINDHI"})
        dt.Rows.Add(New Object() {"si", "SINHALESE"})
        dt.Rows.Add(New Object() {"sk", "SLOVAK"})
        dt.Rows.Add(New Object() {"sl", "SLOVENIAN"})
        dt.Rows.Add(New Object() {"es", "SPANISH"})
        dt.Rows.Add(New Object() {"su", "SUNDANESE"})
        dt.Rows.Add(New Object() {"sw", "SWAHILI"})
        dt.Rows.Add(New Object() {"sv", "SWEDISH"})
        dt.Rows.Add(New Object() {"syr", "SYRIAC"})
        dt.Rows.Add(New Object() {"tg", "TAJIK"})
        dt.Rows.Add(New Object() {"ta", "TAMIL"})
        dt.Rows.Add(New Object() {"tt", "TATAR"})
        dt.Rows.Add(New Object() {"te", "TELUGU"})
        dt.Rows.Add(New Object() {"th", "THAI"})
        dt.Rows.Add(New Object() {"bo", "TIBETAN"})
        dt.Rows.Add(New Object() {"to", "TONGA"})
        dt.Rows.Add(New Object() {"tr", "TURKISH"})
        dt.Rows.Add(New Object() {"uk", "UKRAINIAN"})
        dt.Rows.Add(New Object() {"ur", "URDU"})
        dt.Rows.Add(New Object() {"uz", "UZBEK"})
        dt.Rows.Add(New Object() {"ug", "UIGHUR"})
        dt.Rows.Add(New Object() {"vi", "VIETNAMESE"})
        dt.Rows.Add(New Object() {"cy", "WELSH"})
        dt.Rows.Add(New Object() {"yi", "YIDDISH"})
        dt.Rows.Add(New Object() {"yo", "YORUBA"})


        With ComboBox1
            .DataSource = dt
            .DisplayMember = "CountryName"
            .ValueMember = "CountryCode"
            .SelectedValue = "en"
        End With

        dt1 = dt.Copy()   ' Copy DataTable

        With ComboBox2
            .DataSource = dt1
            .DisplayMember = "CountryName"
            .ValueMember = "CountryCode"
            .SelectedValue = "th"
        End With

    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text = "" Then
            MessageBox.Show("Please Enter text", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            TextBox1.Focus()
            Return
        End If
        Try
            TextBox2.Text = gooplae1.Translate(TextBox1.Text, ComboBox1.SelectedValue, ComboBox2.SelectedValue)
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

    End Sub
End Class&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;5. จากนั้นทำการ run โปรแกรมโดยกดปุ่ม F5 แล้วทดสอบการแปล&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_43-jGEeBoI4/TUrOi_CLOxI/AAAAAAAAAlE/0DhXai_uUGU/s1600/GooPlae01.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_43-jGEeBoI4/TUrOi_CLOxI/AAAAAAAAAlE/0DhXai_uUGU/s400/GooPlae01.png" width="377" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
หมายเหตุ ในการแปลของ Google Translate จำเป็นต้องเข้าสู่ระบบอินเตอร์เน็ตก่อนทุกครั้ง&lt;br /&gt;
&lt;br /&gt;
ตรุษจีน รวย รวย วันตรุษจีน มีทุกปี รวย ทุกปี&lt;br /&gt;
&lt;br /&gt;
ชอบบทความ อย่าลืมคลิกโฆษณา &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-2467891327161737656?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ce2JjR7-S09BQiknDHzAQMO_F2w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ce2JjR7-S09BQiknDHzAQMO_F2w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ce2JjR7-S09BQiknDHzAQMO_F2w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ce2JjR7-S09BQiknDHzAQMO_F2w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/1ITdIfNDOZA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/2467891327161737656/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2011/02/vbnet-google-translator.html#comment-form" title="5 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/2467891327161737656?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/2467891327161737656?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/1ITdIfNDOZA/vbnet-google-translator.html" title="VB.Net Google Translator" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_43-jGEeBoI4/TUrNA7etHwI/AAAAAAAAAlA/1AMP5KGIGYo/s72-c/GooPlae03.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2011/02/vbnet-google-translator.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAMR3g5eSp7ImA9Wx9WF0Q.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-1830111368156199351</id><published>2011-01-21T09:55:00.006+07:00</published><updated>2011-01-23T21:43:06.621+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-23T21:43:06.621+07:00</app:edited><title>VB.Net WMI สร้างคลาสแสดงรายละเอียดของคอมพิวเตอร์กับ WIN32</title><content type="html">WMI หรือ Windows Management Instrumentation เป็นตัวจัดการโครงสร้างข้อมูลพื้นฐานและการดำเนินงานต่าง ๆ ภายใต้ระบบบฎิบัติการวินโดวส์ หรือเรียกง่ายๆ มันคือคลาสที่ใช้จัดการทุกเรื่องของวินโดวส์ สำหรับบทความนี้จะนำเสนอเสี้ยวหนึ่งของ WMI ที่เกี่ยวข้องกับ WIN32 โดยจะยกตัวอย่างโปรแกรม แสดงรายละเอียดต่าง ๆ ของระบบปฎิบัติการ และคอมพิวเตอร์ (hardware) &lt;br /&gt;
1. เปิด Visual Studio 20xx จากนั้นคลิกเลือก New Project....&lt;br /&gt;
เลือก Visual Basic -&amp;gt; Windows -&amp;gt; Windows Forms Application&lt;br /&gt;
ที่ช่อง Name ป้อน mySysInfo&lt;br /&gt;
2. จากนั้นให้เพิ่มคอนโทรล Button กับ Textbox ลงใน Form1 ดังภาพ&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_43-jGEeBoI4/TTwuGUDVOkI/AAAAAAAAAjc/HHhSDxSvo1E/s1600/WMI01.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="http://4.bp.blogspot.com/_43-jGEeBoI4/TTwuGUDVOkI/AAAAAAAAAjc/HHhSDxSvo1E/s320/WMI01.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. จากนั้นทำการเพิ่ม Reference สำหรับ WMI โดยไปที่เมนู Project -&amp;gt; Add Reference...&lt;br /&gt;
จะปรากฎหน้าจอดังภาพด้านล่าง&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_43-jGEeBoI4/TTwvWTfgj-I/AAAAAAAAAjg/3oo93vCtvts/s1600/WMI02.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" src="http://2.bp.blogspot.com/_43-jGEeBoI4/TTwvWTfgj-I/AAAAAAAAAjg/3oo93vCtvts/s320/WMI02.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ให้เลือก System.Management แล้วคลิกปุ่ม OK&lt;br /&gt;
&lt;br /&gt;
4. ทำการสร้างคลาส โดยไปที่เมนู Project -&amp;gt; Add New Item...จากนั้นคลิกเลือก Class ที่ช่อง Name ป้อนชื่อโปรแกรม myWMI.vb&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_43-jGEeBoI4/TTwxAkiNjCI/AAAAAAAAAjk/zcFOWIC1GoQ/s1600/WMI03.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/_43-jGEeBoI4/TTwxAkiNjCI/AAAAAAAAAjk/zcFOWIC1GoQ/s400/WMI03.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. ที่หน้าจอเขียนโปรแกรม myWMI.vb ให้ป้อนคำสั่งตามตัวอย่างด้านล่าง&lt;br /&gt;
&lt;br /&gt;
Imports System.Management&lt;br /&gt;
&lt;br /&gt;
Public Class myWMI&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private objOS As ManagementObjectSearcher&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private objCS As ManagementObjectSearcher&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_strComputerName As String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_strManufacturer As String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_StrModel As String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_strOSName As String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_strOSVersion As String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_strSystemType As String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_strTPM As String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_strWindowsDir As String&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Sub New()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim objMgmt As ManagementObject&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objOS = New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem")&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objCS = New ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem")&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each objMgmt In objOS.Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_strOSName = objMgmt("name").ToString()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_strOSVersion = objMgmt("version").ToString()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_strComputerName = objMgmt("csname").ToString()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_strWindowsDir = objMgmt("windowsdirectory").ToString()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each objMgmt In objCS.Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_strManufacturer = objMgmt("manufacturer").ToString()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_StrModel = objMgmt("model").ToString()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_strSystemType = objMgmt("systemtype").ToString&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_strTPM = objMgmt("totalphysicalmemory").ToString()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Public ReadOnly Property ComputerName()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ComputerName = m_strComputerName&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Public ReadOnly Property Manufacturer()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Manufacturer = m_strManufacturer&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Public ReadOnly Property Model()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Model = m_StrModel&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Public ReadOnly Property OsName()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OsName = m_strOSName&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Public ReadOnly Property OSVersion()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OSVersion = m_strOSVersion&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Public ReadOnly Property SystemType()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SystemType = m_strSystemType&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Public ReadOnly Property TotalPhysicalMemory()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TotalPhysicalMemory = m_strTPM&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Public ReadOnly Property WindowsDirectory()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WindowsDirectory = m_strWindowsDir&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;br /&gt;
End Class&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. จากนั้นย้อนกลับไปยังหน้าจอ Form1 ให้ Double Click ที่ปุ่ม Button1 เพื่อเข้าไปเขียนคำสั่ง จากนั้นให้ป้อนคำสั่งดังนี้&lt;br /&gt;
&lt;br /&gt;
Public Class Form1&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim SHOW_SPEC As New myWMI&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With SHOW_SPEC&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextBox1.Text = "COMPUTER NAME : " &amp;amp; .ComputerName &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "MODEL : " &amp;amp; .Model &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "MANUFACTURER : " &amp;amp; .Manufacturer &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "SYSTEM TYPE : " &amp;amp; .SystemType &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "OS : " &amp;amp; .OsName &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "OS VERSION : " &amp;amp; .OSVersion &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "WINDOWS DIRECTORY : " &amp;amp; .WindowsDirectory &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "TOTAL MEMORY : " &amp;amp; .TotalPhysicalMemory&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End With&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;
&lt;br /&gt;
End Class&lt;br /&gt;
&lt;br /&gt;
7. ทำการบันทึกแล้วกดปุ่ม F5 เพื่อสั่งรันโปรแกรม จะปรากฎฟอร์ม ให้คลิกปุ่ม Button1 จะแสดงรายละเอียดของเครื่องลักษณะดังภาพ&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_43-jGEeBoI4/TTwznnhbzyI/AAAAAAAAAjo/ESsOFXTHSRU/s1600/WMI04.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="210" src="http://3.bp.blogspot.com/_43-jGEeBoI4/TTwznnhbzyI/AAAAAAAAAjo/ESsOFXTHSRU/s320/WMI04.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
จริง ๆ รายละเอียดต่าง ๆ ที่แสดงอยู่ ยังไม่หมดเพียงเท่านี้ ผู้อ่านสามารถแสดงสิ่งต่าง ๆ ได้อีกมากมาย อยากรู้ให้คลิกเข้าไปดูที่&amp;nbsp; WMI Classes -&amp;gt; Win32 Classes&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/aa394084%28v=VS.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa394084%28v=VS.85%29.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_43-jGEeBoI4/TTw0pWlOjXI/AAAAAAAAAjs/ykxvSRg8kII/s1600/WMI05.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="322" src="http://2.bp.blogspot.com/_43-jGEeBoI4/TTw0pWlOjXI/AAAAAAAAAjs/ykxvSRg8kII/s400/WMI05.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
... อย่าเพิ่งเกาหัว และก็อย่าเพิ่งถามว่า แล้วจะใช้อย่างไร.... คำตอบมีอยู่ด้านล่างนี้แหละ&lt;br /&gt;
&lt;br /&gt;
ย้อนกลับไปข้อ 5 ยังจำได้ไหมว่าเราได้สร้างคลาส myWMI.vb&amp;nbsp; ดังนี้&lt;br /&gt;
&lt;br /&gt;
Imports System.Management&lt;br /&gt;
&lt;br /&gt;
Public Class myWMI&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private objOS As ManagementObjectSearcher&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt; ' ตัวแปร objOS สำหรับเก็บค่า OS&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;....&lt;br /&gt;
&lt;br /&gt;
มีการสร้าง ตัวแปร property ด้วยคำสั่ง&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_strComputerName As String&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;' ตัวแปรสำหรับใช้ใน proerty ชือ ComputerName&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_strManufacturer As String&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;' ตัวแปรสำหรับใช้ใน proerty ชือ Manufacturer&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;.....&lt;br /&gt;
&lt;br /&gt;
แล้วก็สร้าง property แบบ อ่านได้อย่างเดียวตามตัวแปรที่กำหนด &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Public ReadOnly Property ComputerName()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ComputerName = m_strComputerName&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt; ' ตัวแปร property ที่กำหนดไว้ก่อนหน้า&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Public ReadOnly Property Manufacturer()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Manufacturer = m_strManufacturer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;  ' ตัวแปร property ที่กำหนดไว้ก่อนหน้า&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;br /&gt;
&lt;br /&gt;
จากนั้นมีการสร้าง Constructors เพื่ออ่านค่าของ WIN32 Class ที่เราต้องการ เช่น คลาส Win32_OperatingSystem &lt;br /&gt;
??? แล้ว Constructors มันคืออะไร มันคือ Sub New() .... End Sub&lt;br /&gt;
??? แล้ว Constructors เอาไว้ทำอะไร&amp;nbsp; Sub New จะทำงานเองโดยอัตโนมัติเมื่อมีการสร้างวัตถุขึ้นมาจากคลาส เช่น&lt;br /&gt;
&lt;br /&gt;
Dim SHOW_SPEC As New myWMI&lt;br /&gt;
&lt;br /&gt;
จากคำสั่งข้างต้น Sub New()....End Sub หรือ Constructors มันจะทำงานอัตโนมัติ (ถ้ามองให้ดี ๆ คล้าย ๆ กับ Form -&amp;gt; Load ที่เกิดขึ้นอัตโนมัติตอนเปิดฟอร์ม)&lt;br /&gt;
&lt;br /&gt;
ดังนั้น เมื่อเราต้องการดึงค่า WIN32_OperatingSystem หรือค่า WIN32 อื่น ๆ เราจึงต้องทำใน Constructors นี้ .... เข้าใจหรือยังครับ....&lt;br /&gt;
&lt;br /&gt;
จากตัวอย่าง&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Sub New()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim objMgmt As ManagementObject&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objOS = New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem")&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objCS = New ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem")&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each objMgmt In objOS.Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_strOSName = objMgmt("name").ToString()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_strOSVersion = objMgmt("version").ToString()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_strComputerName = objMgmt("csname").ToString()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_strWindowsDir = objMgmt("windowsdirectory").ToString()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .....&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .....&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;
&lt;br /&gt;
คำสั่งข้างต้นจะมีการอ่านค่าแล้วมาเก็บไว้ใน property ที่สร้างเตรียมไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
แล้ว &lt;span style="color: red;"&gt;SELECT * FROM Win32_OperatingSystem&lt;/span&gt; มาได้อย่างไร&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
จริงๆ มันคือการคิวรี ค่าจากคลาส Win32 ในส่วนของ OperatingSystem&lt;br /&gt;
แล้วถ้าเป็นคลาสอื่นล่ะจะไปหามาจากไหนได้อย่างไร&lt;br /&gt;
&lt;br /&gt;
หาไม่ยาก ก็อยู่ใน MSDN ของ Microsoft ที่ผู้เขียนแสดงชื่อ web ไว้ให้แล้ว&lt;br /&gt;
เช่น เราต้องการดู BIOS จะทำอย่างไร ก็เข้าไปที่ MSDN ของ Microsoft ในส่วนของ Win32_BIOS&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/aa394077%28v=VS.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa394077%28v=VS.85%29.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
คลิกแล้วจะแสดงหน้าตาดังภาพ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_43-jGEeBoI4/TTw5d1AJGbI/AAAAAAAAAjw/e1kYoIxu6n0/s1600/WMI06.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_43-jGEeBoI4/TTw5d1AJGbI/AAAAAAAAAjw/e1kYoIxu6n0/s400/WMI06.png" width="386" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ถ้าเราต้องการดู SerialNumber ของ BIOS ตามลูกศรชี เราจะต้อง&lt;br /&gt;
1. สร้างตัวแปรสำหรับเก็บค่าของคิวรี SELECT ...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private objBIOS As ManagementObjectSearcher&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; จากนั้นก็สั่งคิวรีข้อมูลจาก คลาส Win32_BIOS&amp;nbsp; ชื่อจะตรงกับคลาสที่เราเปิดดูใน MSDN&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objBIOS = New ManagementObjectSearcher("SELECT * FROM &lt;span style="color: red;"&gt;Win32_BIOS&lt;/span&gt;")&lt;br /&gt;
&lt;br /&gt;
2. สร้างตัวแปร property ดังนี้&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_strBIOSSerialNumber As String &amp;nbsp;&amp;nbsp; ' ประเภทของข้อมูลต้องตรงกัน &lt;br /&gt;
&lt;br /&gt;
3. อ่านค่าจาก objBIOS ซึ่งได้คิวรีข้อมูลมาจาก Win32_BIOS&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each objMgmt In objBIOS.Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_strBIOSSerialNumber = objMgmt("&lt;span style="color: red;"&gt;SerialNumber&lt;/span&gt;").ToString()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' &lt;span style="color: red;"&gt;SerialNumber &lt;/span&gt;ชื่อจะตรงกับค่าที่แสดงอยู่ใน MSDN&lt;br /&gt;
&lt;br /&gt;
4. สร้าง property ดังนี้&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Public ReadOnly Property BIOSSerialNumber()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BIOSSerialNumber = m_strBIOSSerialNumber&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;br /&gt;
&lt;br /&gt;
มาถึงตรงนี้เราคงได้วิธีทำอะไรอื่น ๆ อีกมากมาย&lt;br /&gt;
ถ้าอยากรู้ Serial Number ของ Harddisk ก็ไม่ยากแล้วใช่หรือไม่ ....&lt;br /&gt;
&lt;br /&gt;
อยากรู้อะไร WIN32 ทำได้หมด ถามถึงหวย ก็บอกได้จะเอาเบอร์อะไร&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:-p&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-1830111368156199351?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NxRxCc8awFCfbJRGNyoF9G41_7Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NxRxCc8awFCfbJRGNyoF9G41_7Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NxRxCc8awFCfbJRGNyoF9G41_7Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NxRxCc8awFCfbJRGNyoF9G41_7Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/G7asvbGMsZ0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/1830111368156199351/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2011/01/vbnet-wmi-win32.html#comment-form" title="4 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/1830111368156199351?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/1830111368156199351?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/G7asvbGMsZ0/vbnet-wmi-win32.html" title="VB.Net WMI สร้างคลาสแสดงรายละเอียดของคอมพิวเตอร์กับ WIN32" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_43-jGEeBoI4/TTwuGUDVOkI/AAAAAAAAAjc/HHhSDxSvo1E/s72-c/WMI01.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2011/01/vbnet-wmi-win32.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cAQ3s6fip7ImA9Wx9XFU4.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-7999996390022659611</id><published>2011-01-09T06:57:00.000+07:00</published><updated>2011-01-09T06:57:22.516+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-09T06:57:22.516+07:00</app:edited><title>เรียนภาษาอังกฤษ กับ Voice of America (VOA)</title><content type="html">แนะนำ เว็บเรียนภาษาอังกฤษ จากเจ้าของภาษา ที่ &lt;br /&gt;
&lt;a href="http://www.voanews.com/learningenglish/theclassroom/activities/"&gt;http://www.voanews.com/learningenglish/theclassroom/activities/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-7999996390022659611?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XK5dyPxkVo9Dul_L1K54ZbdjGcU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XK5dyPxkVo9Dul_L1K54ZbdjGcU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XK5dyPxkVo9Dul_L1K54ZbdjGcU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XK5dyPxkVo9Dul_L1K54ZbdjGcU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/vlMQ7r8p9B4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/7999996390022659611/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2011/01/voice-of-america-voa.html#comment-form" title="1 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/7999996390022659611?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/7999996390022659611?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/vlMQ7r8p9B4/voice-of-america-voa.html" title="เรียนภาษาอังกฤษ กับ Voice of America (VOA)" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2011/01/voice-of-america-voa.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AAQ38-eyp7ImA9Wx9WEE8.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-3498643242786003116</id><published>2011-01-07T00:01:00.015+07:00</published><updated>2011-01-14T23:15:42.153+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-14T23:15:42.153+07:00</app:edited><title>VB.Net Game BINGO พูดได้นะจะบอกให้</title><content type="html">Game BINGO เป็นตัวอย่างของโปรเจกต์ ที่ผู้เขียนไม่ได้ตั้งใจนำเสนอการเขียนเกมส์หรอก จริง ๆ ต้องการนำเสนอวิธีการสร้างออปเจกต์ ขณะรันโปรแกรม (Runtime) ซึ่งปกติเราจะใช้วิธีลาก คอนโทรลของ .Net มาวาง ๆ ๆ บนฟอร์มที่เราสร้างขึ้น &lt;br /&gt;
แต่ในบางครั้งเราจำเป็นต้องสร้างออปเจกต์ แบบอัตโนมัติ พร้อมทั้งสามารถเชื่อมโยงไปยัง เหตุการณ์ (event) ที่เราต้องการ  โดยผ่านคำสั่ง  เช่น&lt;br /&gt;
AddHandler btnNew.MouseClick, AddressOf btnNew_Click &lt;br /&gt;
แล้วก็มีเรื่องของการอ้าง property ในแบบอาศัยตัวแปรแทนชื่อที่กำหนดไว้ เช่น&lt;br /&gt;
Me.Controls("Label" &amp;amp; RandomNumber.ToString).Enabled = False&lt;br /&gt;
แถมด้วย คำสั่งที่ใช้ออกเสียงภาษาอังกฤษ โดยอาศัย API ชื่อ SAPI (S น่าจะมาจาก Sound  + กับ API) มาช่วย&lt;br /&gt;
และอื่น ๆ อีกมากมายจากโค้ดตัวอย่างต่อไปนี้ ลองทำดู แล้วจะรู้ว่าคุณทำได้&lt;br /&gt;
&lt;br /&gt;
1. สร้าง Project เป็น Windows Form Application ขึ้นมา 1 ตัว ชื่อ BINGO ดังภาพด้านล่าง&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/_43-jGEeBoI4/TSX2VeJnmdI/AAAAAAAAAjM/jYuW_f9-cXY/s1600/Bingo01.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5559120163789838802" src="http://4.bp.blogspot.com/_43-jGEeBoI4/TSX2VeJnmdI/AAAAAAAAAjM/jYuW_f9-cXY/s400/Bingo01.png" style="cursor: pointer; float: left; height: 276px; margin: 0pt 10px 10px 0pt; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. ที่ Form1 ให้ คลิกเมาส์ที่ฟอร์ม เร็ว ๆ สองที (double-click Mouse) จะเข้าสู่หน้าต่าง เขียนคำสั่ง ให้นำคำสั่งด้านล่างนี้ไปแทนที่ได้เลย&lt;br /&gt;
&lt;pre&gt;Public Class Form1
    Private lblNumber As New Label
    Private lblCounter As New Label
    Private btnRandom As New Button
    Private btnNew As New Button
    Private totLbl As Integer = 49
    Private aNewlbl(totLbl) As Label

    Private nTime As Integer = 0
    Private nCounter As Integer = 0

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '
        'Form
        '
        Me.Text = "BINGO"
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.ClientSize = New System.Drawing.Size(653, 414)
        '
        'lblNumber
        '
        lblNumber.BackColor = System.Drawing.SystemColors.ActiveCaption
        lblNumber.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
        lblNumber.Font = New System.Drawing.Font("Microsoft Sans Serif", 72.0!, _
                                                                          System.Drawing.FontStyle.Bold, _
                                                                          System.Drawing.GraphicsUnit.Point, _
                                                                          CType(222, Byte))
        lblNumber.ForeColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), _
                                                                                          CType(CType(0, Byte), Integer), _
                                                                                          CType(CType(0, Byte), Integer))
        lblNumber.Location = New System.Drawing.Point(10, 272)
        lblNumber.Name = "lblNumber"
        lblNumber.Size = New System.Drawing.Size(490, 106)
        lblNumber.Text = "B I N G O"
        lblNumber.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
        Me.Controls.Add(lblNumber)
        '
        'lblCounter
        '
        lblCounter.BackColor = System.Drawing.SystemColors.ActiveCaption
        lblCounter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
        lblCounter.Font = New System.Drawing.Font("Microsoft Sans Serif", 36.0!, _
                                                                          System.Drawing.FontStyle.Bold, _
                                                                          System.Drawing.GraphicsUnit.Point, _
                                                                          CType(222, Byte))
        lblCounter.ForeColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), _
                                                                                          CType(CType(0, Byte), Integer), _
                                                                                          CType(CType(0, Byte), Integer))
        lblCounter.Location = New System.Drawing.Point(522, 272)
        lblCounter.Name = "lblCounter"
        lblCounter.Size = New System.Drawing.Size(109, 63)
        lblCounter.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
        Me.Controls.Add(lblCounter)
        '
        'btnRandom
        '
        btnRandom.Font = New System.Drawing.Font("Microsoft Sans Serif", 16.0!, _
                                                                            System.Drawing.FontStyle.Regular, _
                                                                            System.Drawing.GraphicsUnit.Point, _
                                                                            CType(222, Byte))
        btnRandom.Location = New System.Drawing.Point(508, 18)
        btnRandom.Name = "btnRandom"
        btnRandom.Size = New System.Drawing.Size(137, 39)
        btnRandom.Text = "Random"
        btnRandom.UseVisualStyleBackColor = True
        AddHandler btnRandom.MouseClick, AddressOf btnRandom_Click
        Me.Controls.Add(btnRandom)
        '
        'btnNew
        '
        btnNew.Font = New System.Drawing.Font("Microsoft Sans Serif", 16.0!, _
                                                                      System.Drawing.FontStyle.Regular, _
                                                                      System.Drawing.GraphicsUnit.Point, _
                                                                      CType(222, Byte))
        btnNew.Location = New System.Drawing.Point(508, 67)
        btnNew.Name = "Button2"
        btnNew.Size = New System.Drawing.Size(137, 39)
        btnNew.Text = "New Game"
        btnNew.UseVisualStyleBackColor = True
        AddHandler btnNew.MouseClick, AddressOf btnNew_Click
        Me.Controls.Add(btnNew)
        '
        'Label
        '
        Dim tt As Integer = 10
        For i As Integer = 0 To totLbl
              aNewlbl(i) = New Label With {.Name = "Label" &amp;amp; CType(i + 1, String).Trim, _
                                                         .Text = CType(i + 1, String).Trim, _
                                                         .Location = New Point(CType(((i Mod 10) * 50) + 10, Integer), CType(tt, Integer)), _
                                                         .Size = New Size(40, 40), _
                                                         .Font = New System.Drawing.Font("Microsoft Sans Serif", _&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;16.0!, System.Drawing.FontStyle.Bold, _
                                                                    System.Drawing.GraphicsUnit.Point, _
                                                                    CType(222, Byte)), _
                                                         .TextAlign = System.Drawing.ContentAlignment.MiddleCenter, _
                                                         .BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle, _
                                                         .BackColor = Color.Azure}
            If i Mod 10 = 9 Then
                tt = tt + 50
            End If
            Me.Controls.Add(aNewlbl(i))
        Next i
    End Sub

    Private Sub btnRandom_Click(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        btnRandom.Enabled = False
        btnNew.Enabled = False
        nCounter = nCounter + 1
        RandomNumber()
        btnRandom.Enabled = True
        btnNew.Enabled = True
    End Sub

    Private Sub btnNew_Click(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        'Reset
        nCounter = 0
        lblCounter.Text = ""
        lblNumber.Text = "B I N G O"
        For Each ctrl As Control In Me.Controls
             If TypeOf ctrl Is Label Then
                 If ctrl.Name &amp;lt;&amp;gt; "lblNumber" And ctrl.Name &amp;lt;&amp;gt; "lblCounter" Then
                      ctrl.BackColor = Color.Azure
                      ctrl.Enabled = True
                 End If
             End If
        Next
        PlaySound("lET'S START BINGO")
    End Sub

    Private Sub RandomNumber()
        Dim RandomClass As New Random()
        Dim RandomNumber As Integer
        If nCounter &amp;lt;= 50 Then            
             'Create a new Random class in VB.NET
             Do While True
                   RandomNumber = RandomClass.Next(1, 51)
                   If Me.Controls("Label" &amp;amp; RandomNumber.ToString).Enabled = True Then
                         Exit Do
                   End If
             Loop
        Else
             MessageBox.Show("Complete BINGO")
             Return
        End If
        lblCounter.Text = nCounter.ToString
        lblNumber.Text = RandomNumber.ToString
        PlaySound("Number " &amp;amp; lblNumber.Text)
        Me.Controls("Label" &amp;amp; RandomNumber.ToString).Enabled = False
        Me.Controls("Label" &amp;amp; RandomNumber.ToString).BackColor = Color.Red
        If nCounter &amp;gt;= 50 Then
              MessageBox.Show("B I N G O  Complete !!!!", "BINGO", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If
    End Sub

    Private Sub PlaySound(ByVal Word As String)
        Dim SAPI
        SAPI = CreateObject("SAPI.spvoice")
        SAPI.speak(Word)
    End Sub
End Class
&lt;/pre&gt;&amp;nbsp;แล้วลอง Run โปรเจกต์ดู จะปรากรฎหน้าตาโปรแกรม คล้าย ๆ แบบนี้ ลองเล่นดู อิๆๆ&lt;br /&gt;
เผื่อเปิดโต๊ะแข่ง กับ Bingo ตามงานวัด&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/_43-jGEeBoI4/TSX21q9-UfI/AAAAAAAAAjU/mfxrGrX3ppM/s1600/Bingo02.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5559120716986470898" src="http://4.bp.blogspot.com/_43-jGEeBoI4/TSX21q9-UfI/AAAAAAAAAjU/mfxrGrX3ppM/s400/Bingo02.png" style="cursor: pointer; float: left; height: 270px; margin: 0pt 10px 10px 0pt; width: 400px;" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-3498643242786003116?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/97v4VbgKGK5h4X5L3Z9mgGbBYg0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/97v4VbgKGK5h4X5L3Z9mgGbBYg0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/97v4VbgKGK5h4X5L3Z9mgGbBYg0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/97v4VbgKGK5h4X5L3Z9mgGbBYg0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/5x_tzC-cdIM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/3498643242786003116/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2011/01/vbnet-game-bingo.html#comment-form" title="1 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/3498643242786003116?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/3498643242786003116?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/5x_tzC-cdIM/vbnet-game-bingo.html" title="VB.Net Game BINGO พูดได้นะจะบอกให้" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_43-jGEeBoI4/TSX2VeJnmdI/AAAAAAAAAjM/jYuW_f9-cXY/s72-c/Bingo01.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2011/01/vbnet-game-bingo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIEQH08fip7ImA9Wx9QEEU.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-5649486995754260183</id><published>2010-12-23T13:35:00.002+07:00</published><updated>2010-12-23T13:41:41.376+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-23T13:41:41.376+07:00</app:edited><title>VB.Net and C# Comparison</title><content type="html">VB.Net and C# Comparison&lt;br /&gt;-------------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;a href="http://www.harding.edu/fmccown/vbnet_csharp_comparison.html"&gt;http://www.harding.edu/fmccown/vbnet_csharp_comparison.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Java and C# Comparison&lt;br /&gt;-----------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;a href="http://www.harding.edu/fmccown/java_csharp_comparison.html"&gt;http://www.harding.edu/fmccown/java_csharp_comparison.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;learn VB.NET and ASP.NET&lt;br /&gt;------------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;a href="http://idealprogrammer.com/"&gt;http://idealprogrammer.com/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;a href="http://www.learnvisualstudio.net/"&gt;http://www.learnvisualstudio.net/&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-5649486995754260183?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qO7R-8X7UGJiA_V5ptYHOCb6dLo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qO7R-8X7UGJiA_V5ptYHOCb6dLo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qO7R-8X7UGJiA_V5ptYHOCb6dLo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qO7R-8X7UGJiA_V5ptYHOCb6dLo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/EOCpoLGG2NU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/5649486995754260183/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2010/12/vbnet-and-c-comparison.html#comment-form" title="1 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/5649486995754260183?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/5649486995754260183?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/EOCpoLGG2NU/vbnet-and-c-comparison.html" title="VB.Net and C# Comparison" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2010/12/vbnet-and-c-comparison.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIBSHszfip7ImA9Wx9QEEU.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-2493898289042472394</id><published>2010-12-23T08:48:00.011+07:00</published><updated>2010-12-23T12:52:39.586+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-23T12:52:39.586+07:00</app:edited><title>VB.Net สร้าง Form Login</title><content type="html">หลังจากที่เราได้เรียนรู้การสร้างฟอร์มมาหลายรูปแบบ ถึงคราวที่เราจะได้เรียนรู้วิธีการสร้างฟอร์ม Login อันที่จริงทาง Visual Studio ได้เตรียมฟอร์มแบบนี้ไว้ให้อยู่แล้ว แต่เราควรทำเองดีกว่า จริงไหม&lt;br /&gt;&lt;br /&gt;สำหรับตัวอย่างในตอนนี้จะอาศัยฟอร์มที่เราได้สร้างไว้ในบทความก่อนหน้า ให้ผู้อ่านสร้างฟอร์มตามหัวข้อ&lt;br /&gt;&lt;a href="http://kasem-mesak.blogspot.com/2010/11/vbnet-form-splitcontainer.html"&gt;VB.Net จับ Form ใส่ SplitContainer&lt;/a&gt; ก่อน เพราะเราจะต้องนำเอาโปรเจกต์ที่ได้สร้างไว้มาต่อยอดทำฟอร์ม login (ใครยังไม่เคยทำรีบไปทำก่อนนะจะบอกให้)&lt;br /&gt;&lt;br /&gt;หลังจากนั้นให้สร้างฐานข้อมูล และตารางที่ SQL Server 200x ดังนี้&lt;br /&gt;&lt;pre&gt;USE [MYDATA]     --เราสร้างไว้ตั้งแต่หัวข้อ VB.Net One Table Data Entry&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;CREATE TABLE [dbo].[tblUser](&lt;br /&gt;[USER_ID] [varchar](15) NOT NULL,&lt;br /&gt;[PASSWORD] [varchar](15) NOT NULL,&lt;br /&gt;[USERNAME] [varchar](50) NULL,&lt;br /&gt;CONSTRAINT [PK_tblUser] PRIMARY KEY CLUSTERED&lt;br /&gt;(&lt;br /&gt;[USER_ID] ASC&lt;br /&gt;)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF,&lt;br /&gt;          IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON,&lt;br /&gt;         ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]&lt;br /&gt;) ON [PRIMARY]&lt;br /&gt;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;--ทำการเพิ่มข้อมูลภายใต้ SQL Server ดังนี้&lt;br /&gt;INSERT INTO tblUSER VALUES('kasem','5555','Kasem Kamolchaipisit')&lt;br /&gt;&lt;/pre&gt;จากนั้นกลับมาที่ Visual Studio 20xx อีกครั้ง  แล้วทำตามขั้นตอน ดังนี้&lt;br /&gt;1. ให้กดปุ่ม Ctrl + Shift + A จากนั้นจะปรากฎ หน้าจอดังภาพ&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_43-jGEeBoI4/TRKwoLqrLPI/AAAAAAAAAiw/ROp8dYzt5FA/s1600/Login01.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 260px;" src="http://4.bp.blogspot.com/_43-jGEeBoI4/TRKwoLqrLPI/AAAAAAAAAiw/ROp8dYzt5FA/s400/Login01.png" alt="" id="BLOGGER_PHOTO_ID_5553695494874279154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;1 คลิกเลือก Windows Form&lt;br /&gt;2 ที่ช่อง Name ตั้งชื่อฟอร์ม : frmLogIn.vb&lt;br /&gt;3 คลิกปุ่ม Add&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. ที่ฟอร์ม frmLogIn ให้สร้างคอนโทรลต่าง ๆ ดังภาพ&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_43-jGEeBoI4/TRKyVrlWX3I/AAAAAAAAAi4/XWRIpUi3z5s/s1600/Login02.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 372px; height: 260px;" src="http://1.bp.blogspot.com/_43-jGEeBoI4/TRKyVrlWX3I/AAAAAAAAAi4/XWRIpUi3z5s/s400/Login02.png" alt="" id="BLOGGER_PHOTO_ID_5553697376047619954" border="0" /&gt;&lt;/a&gt;&lt;pre&gt;&lt;br /&gt;กำหนด Property ของคอนโทรลต่าง ๆ ดังนี้&lt;br /&gt;    หมายเลข 1 กำหนด&lt;br /&gt;     (Name)           =   txtUser_ID&lt;br /&gt;     MaxLength       =  15&lt;br /&gt;         &lt;br /&gt;   หมายเลข 2 กำหนด&lt;br /&gt;     (Name)           =   txtPassword&lt;br /&gt;     MaxLength       =  15&lt;br /&gt;     PasswordChar  =  *&lt;br /&gt;&lt;br /&gt;   หมายเลข 3 กำหนด&lt;br /&gt;     (Name)           =   btnLogIn&lt;br /&gt;   หมายเลข 4 กำหนด &lt;br /&gt;     (Name)           =   btnExit&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3. ที่ฟอร์ม frmLogIn ให้ Double Click เมาส์ ที่ว่าง ๆ ของฟอร์ม เพื่อเปิดหน้าต่างเขียนโค้ดคำสั่ง &lt;br /&gt;ให้เขียนคำสั่งดังนี้&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Imports System.Data&lt;br /&gt;Imports System.Data.SqlClient&lt;br /&gt;&lt;br /&gt;Public Class frmLogIn&lt;br /&gt;    Public pUser_id As String = ""&lt;br /&gt;    Public pPassword As String = ""&lt;br /&gt;    Private Sub btnLogIn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogIn.Click&lt;br /&gt;&lt;br /&gt;        Dim queryString As String = "SELECT * FROM tblUser WHERE USER_ID = '" &amp; txtUser_ID.Text &amp; "'"&lt;br /&gt;&lt;br /&gt;        Using connection = New SqlConnection("Data Source=.;Initial Catalog=MYDATA;Integrated Security=True")&lt;br /&gt;            Dim command As New SqlCommand(queryString, connection)&lt;br /&gt;            connection.Open()&lt;br /&gt;&lt;br /&gt;            Dim reader As SqlDataReader = command.ExecuteReader()&lt;br /&gt;            If reader.HasRows = 0 Then&lt;br /&gt;                MessageBox.Show("Invalid User", "Message", MessageBoxButtons.OK, MessageBoxIcon.Error)&lt;br /&gt;                txtUser_ID.Focus()&lt;br /&gt;            Else&lt;br /&gt;                reader.Read()&lt;br /&gt;                pUser_id = reader("user_id")&lt;br /&gt;                pPassword = reader("password")&lt;br /&gt;                If txtPassword.Text.Trim = pPassword.Trim Then&lt;br /&gt;                    Me.Hide()&lt;br /&gt;                    ' Complete&lt;br /&gt;                    Dim frm As New Form1()&lt;br /&gt;                    frm.Show()&lt;br /&gt;                Else&lt;br /&gt;                    MessageBox.Show("Password not match", "Message", MessageBoxButtons.OK, MessageBoxIcon.Error)&lt;br /&gt;                    txtPassword.Focus()&lt;br /&gt;                End If&lt;br /&gt;            End If&lt;br /&gt;            reader.Close()&lt;br /&gt;        End Using&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click&lt;br /&gt;        Me.Close()&lt;br /&gt;    End Sub&lt;br /&gt;End Class&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;เพิ่มเติม เนื่องจากฟอร์ม frmLogIn จะต้องถูกกำหนดให้เปิดเป็นฟอร์มแรก (startup form) ดังนั้นเราต้องไปกำหนด startup form ใหม่ โดยคลิกที่เมนู Project เลือก &lt;span style="font-style:italic;"&gt;myFormSplitContainer&lt;/span&gt; Properties....&lt;br /&gt;สำหรับ myFormSplitContainer คือชื่อ Project ที่เราสร้างไว้ตอนแรก ดังนั้นถ้าผู้อ่านตั้งชื่อเป็นอย่างอื่นชื่อนี้ก็จะเปลี่ยนไป&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_43-jGEeBoI4/TRLiRBkYpGI/AAAAAAAAAjA/5LnIaPoQfeQ/s1600/Login03.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 290px;" src="http://1.bp.blogspot.com/_43-jGEeBoI4/TRLiRBkYpGI/AAAAAAAAAjA/5LnIaPoQfeQ/s400/Login03.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5553750072607941730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;จากนั้นให้ไปเปิดฟอร์ม ชื่อ From1 ที่เราทำไว้ในหัวข้อ VB.Net จับ Form ใส่ SplitContainer แล้วเพิ่มคำสั่ง ดังนี้ &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed&lt;br /&gt;        frmLogIn.Close()&lt;br /&gt;    End Sub&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;การเพิ่มคำสั่งเพื่อเวลาเราปิดฟอร์ม Form1 แล้วให้ปิดฟอร์ม frmLogIn ด้วย ไม่อย่างนั้นโปรแกรมที่เราสร้างมาจะยังไม่ปิดตัวเองและยังคงค้างอยู่ใน memory &lt;br /&gt;&lt;br /&gt;สวัสดี ได้ข่าวว่า "เหล้าหมาใจดำ" กำลังมาแรง แซง แบล๊กเลเบิ้ล&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-2493898289042472394?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XQo0yEEn_ym5oORHZsiJL7vpQcs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XQo0yEEn_ym5oORHZsiJL7vpQcs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XQo0yEEn_ym5oORHZsiJL7vpQcs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XQo0yEEn_ym5oORHZsiJL7vpQcs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/Ng7brxJj0c8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/2493898289042472394/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2010/12/vbnet-form-login.html#comment-form" title="3 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/2493898289042472394?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/2493898289042472394?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/Ng7brxJj0c8/vbnet-form-login.html" title="VB.Net สร้าง Form Login" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_43-jGEeBoI4/TRKwoLqrLPI/AAAAAAAAAiw/ROp8dYzt5FA/s72-c/Login01.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2010/12/vbnet-form-login.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIHSHg8eip7ImA9Wx9RFkQ.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-5347254820059093224</id><published>2010-12-18T23:17:00.002+07:00</published><updated>2010-12-18T23:42:19.672+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-18T23:42:19.672+07:00</app:edited><title>VB.Net Web Camera</title><content type="html">ตัวอย่าง การเขียนโปรแกรมติดต่อกับ Web Camera ด้วย VB.Net&lt;br /&gt;ให้ออกแบบหน้าจอดังภาพ&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_43-jGEeBoI4/TQzi8XaLtEI/AAAAAAAAAio/-o61q_2w0MM/s1600/webcam01.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 292px;" src="http://3.bp.blogspot.com/_43-jGEeBoI4/TQzi8XaLtEI/AAAAAAAAAio/-o61q_2w0MM/s400/webcam01.png" alt="" id="BLOGGER_PHOTO_ID_5552061967344841794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;เขียนโค้ดคำสั่งดังนี้&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Imports System&lt;br /&gt;Imports System.IO&lt;br /&gt;Imports System.Runtime.InteropServices&lt;br /&gt;Imports Microsoft.Win32&lt;br /&gt;&lt;br /&gt;Public Class Form1&lt;br /&gt;Inherits System.Windows.Forms.Form&lt;br /&gt;&lt;br /&gt;Const WM_CAP_START = &amp;amp;H400S&lt;br /&gt;Const WS_CHILD = &amp;amp;H40000000&lt;br /&gt;Const WS_VISIBLE = &amp;amp;H10000000&lt;br /&gt;&lt;br /&gt;Const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10&lt;br /&gt;Const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11&lt;br /&gt;Const WM_CAP_EDIT_COPY = WM_CAP_START + 30&lt;br /&gt;Const WM_CAP_SEQUENCE = WM_CAP_START + 62&lt;br /&gt;Const WM_CAP_FILE_SAVEAS = WM_CAP_START + 23&lt;br /&gt;&lt;br /&gt;Const WM_CAP_SET_SCALE = WM_CAP_START + 53&lt;br /&gt;Const WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52&lt;br /&gt;Const WM_CAP_SET_PREVIEW = WM_CAP_START + 50&lt;br /&gt;&lt;br /&gt;Const SWP_NOMOVE = &amp;amp;H2S&lt;br /&gt;Const SWP_NOSIZE = 1&lt;br /&gt;Const SWP_NOZORDER = &amp;amp;H4S&lt;br /&gt;Const HWND_BOTTOM = 1&lt;br /&gt;'--The capGetDriverDescription function retrieves the version&lt;br /&gt;' description of the capture driver--&lt;br /&gt;Declare Function capGetDriverDescriptionA Lib "avicap32.dll" _&lt;br /&gt;(ByVal wDriverIndex As Short, _&lt;br /&gt;ByVal lpszName As String, ByVal cbName As Integer, _&lt;br /&gt;ByVal lpszVer As String, _&lt;br /&gt;ByVal cbVer As Integer) As Boolean&lt;br /&gt;&lt;br /&gt;'--The capCreateCaptureWindow function creates a capture window--&lt;br /&gt;Declare Function capCreateCaptureWindowA Lib "avicap32.dll" _&lt;br /&gt;(ByVal lpszWindowName As String, ByVal dwStyle As Integer, _&lt;br /&gt;ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, _&lt;br /&gt;ByVal nHeight As Short, ByVal hWnd As Integer, _&lt;br /&gt;ByVal nID As Integer) As Integer&lt;br /&gt;&lt;br /&gt;'--This function sends the specified message to a window or windows--&lt;br /&gt;Declare Function SendMessage Lib "user32" Alias "SendMessageA" _&lt;br /&gt;(ByVal hwnd As Integer, ByVal Msg As Integer, _&lt;br /&gt;ByVal wParam As Integer, _&lt;br /&gt;&amp;lt;MarshalAs(UnmanagedType.AsAny)&amp;gt; ByVal lParam As Object) As Integer&lt;br /&gt;&lt;br /&gt;'--Sets the position of the window relative to the screen buffer--&lt;br /&gt;Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" _&lt;br /&gt;(ByVal hwnd As Integer, _&lt;br /&gt;ByVal hWndInsertAfter As Integer, ByVal x As Integer, _&lt;br /&gt;ByVal y As Integer, _&lt;br /&gt;ByVal cx As Integer, ByVal cy As Integer, _&lt;br /&gt;ByVal wFlags As Integer) As Integer&lt;br /&gt;&lt;br /&gt;'--This function destroys the specified window--&lt;br /&gt;Declare Function DestroyWindow Lib "user32" _&lt;br /&gt;(ByVal hndw As Integer) As Boolean&lt;br /&gt;&lt;br /&gt;'---used to identify the video source---&lt;br /&gt;Dim CamSource As Integer&lt;br /&gt;'---used as a window handle---&lt;br /&gt;Dim hWnd As Integer&lt;br /&gt;&lt;br /&gt;Private Sub cameraSource()&lt;br /&gt;Dim DriverName As String = Space(80)&lt;br /&gt;Dim DriverVersion As String = Space(80)&lt;br /&gt;For i As Integer = 0 To 9&lt;br /&gt;If capGetDriverDescriptionA(i, DriverName, 80, _&lt;br /&gt;DriverVersion, 80) Then&lt;br /&gt;ListBox1.Items.Add(DriverName.Trim)&lt;br /&gt;End If&lt;br /&gt;Next&lt;br /&gt;End Sub&lt;br /&gt;Private Sub previewCamera(ByVal pbCtrl As PictureBox)&lt;br /&gt;hWnd = capCreateCaptureWindowA(CamSource, _&lt;br /&gt;WS_VISIBLE Or WS_CHILD, 0, 0, 0, _&lt;br /&gt;0, pbCtrl.Handle.ToInt32, 0)&lt;br /&gt;If SendMessage( _&lt;br /&gt;hWnd, WM_CAP_DRIVER_CONNECT, _&lt;br /&gt;CamSource, 0) Then&lt;br /&gt;&lt;br /&gt;'---set the preview scale---&lt;br /&gt;SendMessage(hWnd, WM_CAP_SET_SCALE, True, 0)&lt;br /&gt;'---set the preview rate (ms)---&lt;br /&gt;SendMessage(hWnd, WM_CAP_SET_PREVIEWRATE, 30, 0)&lt;br /&gt;'---start previewing the image---&lt;br /&gt;SendMessage(hWnd, WM_CAP_SET_PREVIEW, True, 0)&lt;br /&gt;'---resize window to fit in PictureBox control---&lt;br /&gt;SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, _&lt;br /&gt;pbCtrl.Width, pbCtrl.Height, _&lt;br /&gt;SWP_NOMOVE Or SWP_NOZORDER)&lt;br /&gt;Else&lt;br /&gt;'--error connecting to video source---&lt;br /&gt;DestroyWindow(hWnd)&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;br /&gt;Private Sub stopPreviewCamera()&lt;br /&gt;SendMessage(hWnd, WM_CAP_DRIVER_DISCONNECT, CamSource, 0)&lt;br /&gt;DestroyWindow(hWnd)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load&lt;br /&gt;cameraSource()&lt;br /&gt;btnPreview.Enabled = False&lt;br /&gt;btnStopPreview.Enabled = False&lt;br /&gt;btnRecord.Enabled = False&lt;br /&gt;btnStopRecord.Enabled = False&lt;br /&gt;btnCapture.Enabled = False&lt;br /&gt;Me.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage&lt;br /&gt;Me.SaveFileDialog1.FileName = "Kasem"&lt;br /&gt;Me.SaveFileDialog1.Filter = "PNG|*.png"&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Private Sub ListBox1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick&lt;br /&gt;Label1.Visible = False&lt;br /&gt;previewCamera(PictureBox1)&lt;br /&gt;btnStopPreview.Enabled = True&lt;br /&gt;btnPreview.Enabled = False&lt;br /&gt;btnRecord.Enabled = True&lt;br /&gt;btnCapture.Enabled = True&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged&lt;br /&gt;CamSource = ListBox1.SelectedIndex&lt;br /&gt;'---preview the selected video source&lt;br /&gt;End Sub&lt;br /&gt;' recording&lt;br /&gt;Private Sub btnRecord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRecord.Click&lt;br /&gt;btnStopRecord.Enabled = True&lt;br /&gt;btnRecord.Enabled = False&lt;br /&gt;SendMessage(hWnd, WM_CAP_SEQUENCE, 0, 0)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;' stop recording and ask to save video&lt;br /&gt;Private Sub btnStopRecord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStopRecord.Click&lt;br /&gt;Dim save As Integer&lt;br /&gt;save = MsgBox("Do you want to save your recording video", MsgBoxStyle.YesNo + MsgBoxStyle.Information, "Recording Video")&lt;br /&gt;If (save = MsgBoxResult.Yes) Then&lt;br /&gt;Dim saveName As New SaveFileDialog&lt;br /&gt;saveName.Filter = "Avi file(*.avi)|*.avi"&lt;br /&gt;If saveName.ShowDialog = DialogResult.OK Then&lt;br /&gt;' SendMessage(hWnd, WM_CAP_FILE_SAVEAS, 0, "C:\RecordedVideo.avi")&lt;br /&gt;SendMessage(hWnd, WM_CAP_FILE_SAVEAS, 0, saveName.FileName)&lt;br /&gt;End If&lt;br /&gt;End If&lt;br /&gt;Me.Cursor = System.Windows.Forms.Cursors.Default&lt;br /&gt;btnRecord.Enabled = True&lt;br /&gt;btnStopRecord.Enabled = False&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;' preview&lt;br /&gt;Private Sub btnPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPreview.Click&lt;br /&gt;CamSource = ListBox1.SelectedIndex&lt;br /&gt;previewCamera(PictureBox1)&lt;br /&gt;btnPreview.Enabled = False&lt;br /&gt;btnStopPreview.Enabled = True&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;'stop preview&lt;br /&gt;Private Sub btnStopPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStopPreview.Click&lt;br /&gt;stopPreviewCamera()&lt;br /&gt;btnPreview.Enabled = True&lt;br /&gt;btnStopPreview.Enabled = False&lt;br /&gt;btnCapture.Enabled = False&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Private Sub btnCapture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCapture.Click&lt;br /&gt;Dim data As IDataObject&lt;br /&gt;Dim bmap As Image&lt;br /&gt;SendMessage(hWnd, WM_CAP_EDIT_COPY, 0, 0)&lt;br /&gt;data = Clipboard.GetDataObject()&lt;br /&gt;If data.GetDataPresent(GetType(System.Drawing.Bitmap)) Then&lt;br /&gt;bmap = CType(data.GetData(GetType(System.Drawing.Bitmap)), Image)&lt;br /&gt;Me.PictureBox1.Image = bmap&lt;br /&gt;stopPreviewCamera()&lt;br /&gt;Me.btnPreview.Enabled = True&lt;br /&gt;If Me.SaveFileDialog1.ShowDialog = DialogResult.OK Then&lt;br /&gt;bmap.Save(Me.SaveFileDialog1.FileName, Imaging.ImageFormat.Png)&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;'If Me.SaveFileDialog1.ShowDialog = DialogResult.OK Then&lt;br /&gt;' bmap.Save(Me.SaveFileDialog1.FileName, Imaging.ImageFormat.Bmp)&lt;br /&gt;'End If&lt;br /&gt;&lt;br /&gt;previewCamera(PictureBox1)&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;End Class&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-5347254820059093224?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nrxet0mKeGqwdW8c5mKX2PRRNO0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nrxet0mKeGqwdW8c5mKX2PRRNO0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nrxet0mKeGqwdW8c5mKX2PRRNO0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nrxet0mKeGqwdW8c5mKX2PRRNO0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/UXJ7DCEfP30" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/5347254820059093224/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2010/12/vbnet-web-camera.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/5347254820059093224?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/5347254820059093224?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/UXJ7DCEfP30/vbnet-web-camera.html" title="VB.Net Web Camera" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_43-jGEeBoI4/TQzi8XaLtEI/AAAAAAAAAio/-o61q_2w0MM/s72-c/webcam01.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2010/12/vbnet-web-camera.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08AQHo9eyp7ImA9Wx9RFkU.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-2011740830344499565</id><published>2010-12-18T21:10:00.001+07:00</published><updated>2010-12-18T21:17:21.463+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-18T21:17:21.463+07:00</app:edited><title>ขนมเข่ง</title><content type="html">ขนมเข่ง กับ วันตรุษจีน&lt;br /&gt;เกิดมาก็เจอกับขนมเข่ง เห็นขนมเข่งมากมายวางเรียงเต็มบ้าน เป็นแบบนี้ทุกปี จำไม่ได้ว่าเลิกทำไปตั้งแต่เมื่อไร สมัยเมื่อเป็นเด็ก ย้อนกลับไปเมื่อราว 30 กว่าปีก่อน พอใกล้ถึงวันตรุษจีนที่ไรที่บ้านจะมีการทำขนมเข่ง เพื่อนำไปแจก มีทั้งคนแถวบ้าน และก็ลูกค้า ซึ่งจะต้องเตรียมการกันก่อนโดยจะเริ่มทำกันก่อนวันตรุษจีนหลายวัน โดยมีป๊า(พ่อ)เป็นโต้โผใหญ่ ส่วนพวกเด็กเล็ก ๆ ก็เป็นลูกมือ ทำกันอย่างสนุกสนาน สมัยนั้นไม่สะดวกสบายเท่ากับสมัยนี้ เริ่มตั้งแต่ต้องไปหาซื้อข้าวเหนียว  (ข้าวเหนียวที่ยังไม่ได้นึ่ง) จากนั้นพวกเราก็จะตามป๊าไปโรงทำขนมซึ่งอยู่ไม่ไกลจากบ้านซักเท่าไหร่ (ปัจจุบันโรงทำขนมเจ้านี้ไม่มีแล้ว) นำข้าวเหนียวไปโม่ให้กลายเป็นแป้ง โมหินจะมีลักษณะดังภาพ แต่สมััยนั้นดีหน่อย ติดมอเตอร์ ทำให้บดข้าวเหนียวให้เป็นแป้งได้ไว เวลาโมจะต้&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_43-jGEeBoI4/TQy3oQS1RfI/AAAAAAAAAiQ/5p5aj2yaY2E/s1600/keng01.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 289px; height: 151px;" src="http://1.bp.blogspot.com/_43-jGEeBoI4/TQy3oQS1RfI/AAAAAAAAAiQ/5p5aj2yaY2E/s400/keng01.png" alt="" id="BLOGGER_PHOTO_ID_5552014342837585394" border="0" /&gt;&lt;/a&gt;องใส่ข้าวเหนียวกับน้ำสะอาดเพื่อจะได้โมออกมาเป็นแป้ง แล้วก็มีถุงผ้าดิบรองรับไว้ เราจะเริ่มทำกันตอนกลางคืน ก็ใช้เวลาพักใหญ่ ๆ กว่าจะเสร็จ เมื่อเสร็จแล้วแป้งที่ได้ยังไม่สามารถนำมาทำขนมได้ ต้องทำให้น้ำที่ใช้ตอนโม่พร่องออกจากแป้งก่อน วิธีการที่ทำสมัยนั้นคือ ผูกถุงผ้าที่มีน้ำแป้งอยู่ แขวนไว้ที่ขือบ้าน 1 คืน พอวันรุ่งขึ้น แป้งไม่ได้แห้งสนิทซึ่งก็กำลังดี&lt;br /&gt;จากนั้นป๊าก็จะนำเอากาละมัง (สมัยนั้นกาละมังจะเป็นอะลูมิเนียมใบใหญ่) นำแป้งข้าวเหนียวที่โม่เตรียมไว้ตั้งแต่เมื่อคืนมาใส่ สำหรับส่วนผสมการทำนอกจากแป้งข้าวเหนียวก็จะมี แป้งมัน กับน้ำตาลทรายขาว เราก็เริ่มเทน้ำตาลทรายขาวลงไป ป๊าก็จะคอยนวดแป้งซึ่งเปียกน้ำหมาด ๆ สักพักแป้งที่ผสมกับน้ำตาลก็เริ่มเหลว ระหว่างนั้นป๊าก็จะกวนไปชิมไป ว่าหวานพอดีหรือยัง (ไม่มีการตวงส่วนผสมใด ๆ ทั้งสิ้น) จนได้ที่ แล้วก็ใส่แป้งมัน (ใส่ไม่ต้องมาก) ตอนนั้นก็สงสัย เลยถามป๊าว่าใส่เพื่ออะไร ป๊าก็ตอบมาว่า เพื่อให้ขนมเหนียว นุ่ม ซึ่งก็เป็นจริง เพราะ พอถึงวันตรุษจีนทีไรหมดทุกที บางคนมาขอหรือจองก่อนวันแจกก็มี&lt;br /&gt;หลังจากนว&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_43-jGEeBoI4/TQy7a1tJfYI/AAAAAAAAAiY/8wPgAIBdqg0/s1600/keng02.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 203px; height: 120px;" src="http://3.bp.blogspot.com/_43-jGEeBoI4/TQy7a1tJfYI/AAAAAAAAAiY/8wPgAIBdqg0/s400/keng02.png" alt="" id="BLOGGER_PHOTO_ID_5552018510408416642" border="0" /&gt;&lt;/a&gt;ด กวน ผสมแป้งได้ที่แล้ว เหล่าลูกมือ ก็ต้องเตรียมเข่ง ซึ่งก็คือ กระทงใบตองแห้ง ซื้อมาเยอะมาก แล้วก็มีถ้วยรองเข่ง ซึ่งสมัยก่อนจะทำด้วยอะลูมิเนียม แต่ปัจจุบันเห็นเป็นไม่ไผ่สาน เราก็นำกระทงมาใส่ไว้ในถ้วยรองเข่ง แล้วก็วางเรียงกัน ส่วนคนอื่นก็ทำหน้าที่นำน้ำมันมะพร้าวมาทา (สมัยนั้นยังไม่มีน้ำมันพืชเป็นขวด ๆ แบบสมัยนี้) ทาเพื่อให้เข่งไม่ติดกับขนม จากนั้นพวกเราก็ทำการหยอดแป้งขนมเข่ง ลงในเข่งกันอย่างสนุกสนาน&lt;br /&gt;ต่อมาต้องนำขนมไปนึ่ง การทำขนมเป็นจำนวนมากคงใช้เตาแก๊ส และซึ็งนึ่งแบบทำครัวตามบ้านคงไม่ทันกิน ที่บ้านก็จะมีกระทะใบใหญ่มาก ๆ เส้นผ่าศูนย์กลางเมตรนึงได้มั้ง พวกเราก็จะหาหินก้อนใหญ่ ๆ มาวางรองกระทะ แล้วก็ใช้ไม้เป็นเชื้อเพลิง เวลาทำก็จะใส่น้ำลงในกระทะ หาไม้มาขัดกันเป็นฐานวางขนม จากนั้นก็จะมีไม้ไผ่สานเป็นวงกลมใหญ่ ๆ เหมือนฝาปิดเข่งฝักมารองจากนั้นก็นำขนมเข่งมาเรียงกันจนเต็ม แล้วก็วางไม้ไผ่สาานวงกลมใหญ่ ๆ ซ้อนไป แล้ววางเข่งขนมไปเป็นชั้น ๆ สูงเกือบ 10 ชั้น จากนั้นก็นำฝาซึ้งยักษ์ สมัยนั้นต้องเรียกว่ายักษ์ เพราะตอนเด็ก ๆ เวลาเล่นซ่อนแอบก็จะเข้าไปแอบอยู่ในนี้ได้อย่างสบาย นำมาครอบขนมไว้เพื่อนึ่งขนมให้สุก&lt;br /&gt;เวลานึงขนมก็จะมีเทคนิคในการนึ่ง โดยผู้เขียนจะเป็นคนคอยควบคุมเวลา สมัยนั้นคงไม่ต้องหานาฬิกาปลุกแบบสมัยนี้ วิธีการของเราก็คือ ใช้ธูป แทนนาฬิกาปลุก ก็ทำการจะธูป แล้วปักไว้ข้าง ๆ เตา เวลาคนเดินไปเดินมาหรือมาที่บ้านก็จะถามว่าจุดไว้บูชาขนมเหรอ เราก็แกล้งตอบว่าใช่ จะให้ขนมอร่อยก็ต้องบูชาขนม แต่จริง ๆ แล้ว มันคือนาฬิกาจับเวลา เวลานึ่งเราก็คอยดูน้ำอย่าให้น้ำแห้งจากกระทะ แล้วก็ดูธูปว่าหมดหรือยัง รอจนธูปหมด พอหมด + อีกสัก 5 นาทีก็นำขนมขึ้นจากเตาได้เลย ขนมก็สุกเรียบร้อย หอมน่ากิน&lt;br /&gt;แต่ยังไม่หมดแค่นั้น เราก็ต้องยกขนมออกมาจากเตา เอาออกจากถ้วย มาเรียงต่อ ๆ กัน แล้วก็นำขนมไปนึ่งต่อ การนึ่งครั้งใหม่ต้องเทน้ำที่นึ่งเก่าออกให้หมดแล้วใส่น้ำใหม่เข้าไปไม่งั้นขนมล๊อตใหม่จะสีเหลืองไม่น่ารับประทาน เราทำกันอย่างนี้กันทั้งวัน ๆ เลย ตั้งแต่เช้ายันมืด เคยนับขนมที่ทำได้ ปี ๆ นึงเป็นพันเข่ง เมื่อนึ่งขนมเสร็จ ขั้นตอนต่อมา ก็คือแต้มจุดสี ก็ไปนำสีผสมอาหารสีแดงมาผสมน้ำ แล้วก็นำตะเกียบมาจุ่มแล้วจิ้มลงบนขนม&lt;br /&gt;ส่วนจะจิ้ม กี่จุดก็ตามสะดวก แรก ๆ สนุก จิ้ม สามจุด ไป ๆ เหลือจุดเดียว เพราะเมื่อย จุดสีมิได้บ่งบอกอะไรหรอกเพราะสมัยนั้นยังไม่มีขนมเข่งหน้ามะพร้าว หน้า ... จิปาถะเหมือนสมัยนี้&lt;br /&gt;ขนมเข่งเป็นขนมที่ไม่หมดอายุง่ายๆ เก็บกันได้เป็นเดือน ๆ หลายครั้งที่ทำก็เก็บส่วนหนึ่งไว้กิน ด้วยความเบื่อมาก ๆ ไม่มีใครกินเลย คาไว้ในบ้านเป็นเดือน ๆ จนราขึ้น สมัยนั้นราไม่เป็นอัตราย ถ้าเป็นปานี้คงไม่มาเขียนบทความนี้ได้หรอก อิๆๆ เวลาหิวหาอะไรกินไม่ได้ก็ใช้ขนมเข่งนี่แหละ หลังจากที่เก็บไว้หลายเดือนลักษณะของขนมจะแข็งโป้กปาหัวแตกได้เลย เราก็ต้องเอาเข่งใบตองออก แล้วล้างน้ำเอาราที่ขึ้นออกให้หมด จากนั้นก็หามีดอีโต้ใหญ่ ๆ มาหั่นให้เป็นชิ้น ๆ บาง ๆ หน่อย แล้วนำขนมนั้นไปทอดกับน้ำมัน กินแสนอร่อย วันใดเจอไข่อยู่ในครัวก็เอาขนมเข่งมาชุบไข่ทอด อร่อยไปทั้งวัน&lt;br /&gt;เวลาเลยมาหลายสิบปี เราก็ทำขนมกันเป็นสิบปี จนจำไม่ได้ว่าเราเลิกทำกันตอนไหน คงเป็นเพราะบ้านเมืองเจริญขึ้น ในกรุงเทพฯ จะหาที่จุดเตาใหญ่ ๆ เอาไม้มาทำฟืนคงยาก แล้วก็เลิกทำไปในที่สุด&lt;br /&gt;&lt;br /&gt;ตรุษจีนนี้อย่าลืมหาขนมเข่งมากินสักเข่งน่ะ....&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-2011740830344499565?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SHB6gt-cPKMpP4ikxigywHaXZlw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SHB6gt-cPKMpP4ikxigywHaXZlw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SHB6gt-cPKMpP4ikxigywHaXZlw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SHB6gt-cPKMpP4ikxigywHaXZlw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/kYSC_3kBU10" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/2011740830344499565/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2010/12/blog-post.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/2011740830344499565?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/2011740830344499565?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/kYSC_3kBU10/blog-post.html" title="ขนมเข่ง" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_43-jGEeBoI4/TQy3oQS1RfI/AAAAAAAAAiQ/5p5aj2yaY2E/s72-c/keng01.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2010/12/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EGSH4-fSp7ImA9Wx9VEE0.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-9032037135739518262</id><published>2010-12-17T07:54:00.033+07:00</published><updated>2011-01-26T09:40:29.055+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-26T09:40:29.055+07:00</app:edited><title>VB.Net One Table Data Entry</title><content type="html">&lt;span style="font-weight: bold;"&gt;ตัวอย่าง&lt;/span&gt; การเขียนโปรแกรมป้อนข้อมูลในลักษณะตารางเดียว ซึ่งมีทั้งการสอบถามข้อมูล การแสดงข้อมูล การเพิ่มข้อมูล การลบข้อมูล การแก้ไขข้อมูล และการลบข้อมูล อยู่ในหน้าจอเดียวกัน ตามตัวอย่างในภาพ&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_43-jGEeBoI4/TQq9PfgXKdI/AAAAAAAAAiI/iyd10lyUnPk/s1600/formentry01.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5551457564540479954" src="http://1.bp.blogspot.com/_43-jGEeBoI4/TQq9PfgXKdI/AAAAAAAAAiI/iyd10lyUnPk/s400/formentry01.png" style="cursor: pointer; float: left; height: 362px; margin: 0pt 10px 10px 0pt; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ก่อนอื่นสร้างโปรเจกต์ใหม่ โดยตั้งชื่อว่า myAPP&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;
สำหรับวิธีการใส่โค้ดภายใต้ Form1.Designer.vb ให้ทำดังนี้&lt;br /&gt;
(ทำเพื่อเราไม่ต้องมาลากวางคอนโทรลต่าง ๆ ตามรูปด้านบน)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_43-jGEeBoI4/TT-IfcTy6xI/AAAAAAAAAkk/CnGe5P2ftGg/s1600/dataentry01.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="371" src="http://1.bp.blogspot.com/_43-jGEeBoI4/TT-IfcTy6xI/AAAAAAAAAkk/CnGe5P2ftGg/s400/dataentry01.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;nbsp;ที่ Solution Explorer&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - คลิกที่ปุ่ม หมายเลข 1 Show All File &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - คลิกที่หมายเลข 2 เพื่อแสดงไฟล์ทั้งหมดของ Form1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - ดับเบิ้ลคลิกที่ไฟล์หมายเลข 3 เพื่อเปิด Source Code ขึ้นมา&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; จากนั้นนำโค้ดด้านล่างนี้ไปแทนที่โค้ดของเดิม&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt; Source Code -&amp;gt; Form1.Designer.vb&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()&amp;gt; _&lt;br /&gt;
Partial Class Form1&lt;br /&gt;
Inherits System.Windows.Forms.Form&lt;br /&gt;
&lt;br /&gt;
'Form overrides dispose to clean up the component list.&lt;br /&gt;
&amp;lt;System.Diagnostics.DebuggerNonUserCode()&amp;gt; _&lt;br /&gt;
Protected Overrides Sub Dispose(ByVal disposing As Boolean)&lt;br /&gt;
Try&lt;br /&gt;
If disposing AndAlso components IsNot Nothing Then&lt;br /&gt;
components.Dispose()&lt;br /&gt;
End If&lt;br /&gt;
Finally&lt;br /&gt;
MyBase.Dispose(disposing)&lt;br /&gt;
End Try&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
'Required by the Windows Form Designer&lt;br /&gt;
Private components As System.ComponentModel.IContainer&lt;br /&gt;
'NOTE: The following procedure is required by the Windows Form Designer&lt;br /&gt;
'It can be modified using the Windows Form Designer.&lt;br /&gt;
'Do not modify it using the code editor.&lt;br /&gt;
&amp;lt;System.Diagnostics.DebuggerStepThrough()&amp;gt; _&lt;br /&gt;
Private Sub InitializeComponent()&lt;br /&gt;
Me.txtStudent_ID = New System.Windows.Forms.TextBox()&lt;br /&gt;
Me.txtFirstName = New System.Windows.Forms.TextBox()&lt;br /&gt;
Me.txtLastName = New System.Windows.Forms.TextBox()&lt;br /&gt;
Me.Label1 = New System.Windows.Forms.Label()&lt;br /&gt;
Me.Label2 = New System.Windows.Forms.Label()&lt;br /&gt;
Me.Label3 = New System.Windows.Forms.Label()&lt;br /&gt;
Me.SplitContainer1 = New System.Windows.Forms.SplitContainer()&lt;br /&gt;
Me.Label4 = New System.Windows.Forms.Label()&lt;br /&gt;
Me.txtSearch = New System.Windows.Forms.TextBox()&lt;br /&gt;
Me.dg = New System.Windows.Forms.DataGridView()&lt;br /&gt;
Me.btnLast = New System.Windows.Forms.Button()&lt;br /&gt;
Me.btnFirst = New System.Windows.Forms.Button()&lt;br /&gt;
Me.btnDisplay = New System.Windows.Forms.Button()&lt;br /&gt;
Me.btnPrevious = New System.Windows.Forms.Button()&lt;br /&gt;
Me.btnNext = New System.Windows.Forms.Button()&lt;br /&gt;
Me.btnNew = New System.Windows.Forms.Button()&lt;br /&gt;
Me.btnDelete = New System.Windows.Forms.Button()&lt;br /&gt;
Me.btnEdit = New System.Windows.Forms.Button()&lt;br /&gt;
Me.btnSave = New System.Windows.Forms.Button()&lt;br /&gt;
Me.btnCancel = New System.Windows.Forms.Button()&lt;br /&gt;
CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).BeginInit()&lt;br /&gt;
Me.SplitContainer1.Panel1.SuspendLayout()&lt;br /&gt;
Me.SplitContainer1.Panel2.SuspendLayout()&lt;br /&gt;
Me.SplitContainer1.SuspendLayout()&lt;br /&gt;
CType(Me.dg, System.ComponentModel.ISupportInitialize).BeginInit()&lt;br /&gt;
Me.SuspendLayout()&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'txtStudent_ID&lt;br /&gt;
'&lt;br /&gt;
Me.txtStudent_ID.Location = New System.Drawing.Point(100, 25)&lt;br /&gt;
Me.txtStudent_ID.Name = "txtStudent_ID"&lt;br /&gt;
Me.txtStudent_ID.Size = New System.Drawing.Size(150, 20)&lt;br /&gt;
Me.txtStudent_ID.TabIndex = 1&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'txtFirstName&lt;br /&gt;
'&lt;br /&gt;
Me.txtFirstName.Location = New System.Drawing.Point(100, 52)&lt;br /&gt;
Me.txtFirstName.Name = "txtFirstName"&lt;br /&gt;
Me.txtFirstName.Size = New System.Drawing.Size(236, 20)&lt;br /&gt;
Me.txtFirstName.TabIndex = 2&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'txtLastName&lt;br /&gt;
'&lt;br /&gt;
Me.txtLastName.Location = New System.Drawing.Point(100, 79)&lt;br /&gt;
Me.txtLastName.Name = "txtLastName"&lt;br /&gt;
Me.txtLastName.Size = New System.Drawing.Size(236, 20)&lt;br /&gt;
Me.txtLastName.TabIndex = 3&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'Label1&lt;br /&gt;
'&lt;br /&gt;
Me.Label1.AutoSize = True&lt;br /&gt;
Me.Label1.Location = New System.Drawing.Point(36, 28)&lt;br /&gt;
Me.Label1.Name = "Label1"&lt;br /&gt;
Me.Label1.Size = New System.Drawing.Size(58, 13)&lt;br /&gt;
Me.Label1.TabIndex = 4&lt;br /&gt;
Me.Label1.Text = "Student ID"&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'Label2&lt;br /&gt;
'&lt;br /&gt;
Me.Label2.AutoSize = True&lt;br /&gt;
Me.Label2.Location = New System.Drawing.Point(36, 55)&lt;br /&gt;
Me.Label2.Name = "Label2"&lt;br /&gt;
Me.Label2.Size = New System.Drawing.Size(57, 13)&lt;br /&gt;
Me.Label2.TabIndex = 5&lt;br /&gt;
Me.Label2.Text = "First Name"&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'Label3&lt;br /&gt;
'&lt;br /&gt;
Me.Label3.AutoSize = True&lt;br /&gt;
Me.Label3.Location = New System.Drawing.Point(35, 82)&lt;br /&gt;
Me.Label3.Name = "Label3"&lt;br /&gt;
Me.Label3.Size = New System.Drawing.Size(58, 13)&lt;br /&gt;
Me.Label3.TabIndex = 6&lt;br /&gt;
Me.Label3.Text = "Last Name"&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'SplitContainer1&lt;br /&gt;
'&lt;br /&gt;
Me.SplitContainer1.Location = New System.Drawing.Point(13, 13)&lt;br /&gt;
Me.SplitContainer1.Name = "SplitContainer1"&lt;br /&gt;
Me.SplitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'SplitContainer1.Panel1&lt;br /&gt;
'&lt;br /&gt;
Me.SplitContainer1.Panel1.BackColor = System.Drawing.SystemColors.ActiveCaption&lt;br /&gt;
Me.SplitContainer1.Panel1.Controls.Add(Me.Label4)&lt;br /&gt;
Me.SplitContainer1.Panel1.Controls.Add(Me.txtSearch)&lt;br /&gt;
Me.SplitContainer1.Panel1.Controls.Add(Me.dg)&lt;br /&gt;
Me.SplitContainer1.Panel1.Controls.Add(Me.btnLast)&lt;br /&gt;
Me.SplitContainer1.Panel1.Controls.Add(Me.btnFirst)&lt;br /&gt;
Me.SplitContainer1.Panel1.Controls.Add(Me.btnDisplay)&lt;br /&gt;
Me.SplitContainer1.Panel1.Controls.Add(Me.btnPrevious)&lt;br /&gt;
Me.SplitContainer1.Panel1.Controls.Add(Me.btnNext)&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'SplitContainer1.Panel2&lt;br /&gt;
'&lt;br /&gt;
Me.SplitContainer1.Panel2.BackColor = System.Drawing.SystemColors.ActiveCaption&lt;br /&gt;
Me.SplitContainer1.Panel2.Controls.Add(Me.Label3)&lt;br /&gt;
Me.SplitContainer1.Panel2.Controls.Add(Me.txtLastName)&lt;br /&gt;
Me.SplitContainer1.Panel2.Controls.Add(Me.Label2)&lt;br /&gt;
Me.SplitContainer1.Panel2.Controls.Add(Me.txtStudent_ID)&lt;br /&gt;
Me.SplitContainer1.Panel2.Controls.Add(Me.Label1)&lt;br /&gt;
Me.SplitContainer1.Panel2.Controls.Add(Me.txtFirstName)&lt;br /&gt;
Me.SplitContainer1.Size = New System.Drawing.Size(458, 365)&lt;br /&gt;
Me.SplitContainer1.SplitterDistance = 225&lt;br /&gt;
Me.SplitContainer1.TabIndex = 0&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'Label4&lt;br /&gt;
'&lt;br /&gt;
Me.Label4.AutoSize = True&lt;br /&gt;
Me.Label4.Location = New System.Drawing.Point(15, 12)&lt;br /&gt;
Me.Label4.Name = "Label4"&lt;br /&gt;
Me.Label4.Size = New System.Drawing.Size(58, 13)&lt;br /&gt;
Me.Label4.TabIndex = 13&lt;br /&gt;
Me.Label4.Text = "Student ID"&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'txtSearch&lt;br /&gt;
'&lt;br /&gt;
Me.txtSearch.Location = New System.Drawing.Point(78, 9)&lt;br /&gt;
Me.txtSearch.Name = "txtSearch"&lt;br /&gt;
Me.txtSearch.Size = New System.Drawing.Size(334, 20)&lt;br /&gt;
Me.txtSearch.TabIndex = 0&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'dg&lt;br /&gt;
'&lt;br /&gt;
Me.dg.AllowUserToAddRows = False&lt;br /&gt;
Me.dg.AllowUserToDeleteRows = False&lt;br /&gt;
Me.dg.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize&lt;br /&gt;
Me.dg.Location = New System.Drawing.Point(4, 35)&lt;br /&gt;
Me.dg.Name = "dg"&lt;br /&gt;
Me.dg.ReadOnly = True&lt;br /&gt;
Me.dg.Size = New System.Drawing.Size(451, 149)&lt;br /&gt;
Me.dg.TabIndex = 1&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'btnLast&lt;br /&gt;
'&lt;br /&gt;
Me.btnLast.Location = New System.Drawing.Point(311, 190)&lt;br /&gt;
Me.btnLast.Name = "btnLast"&lt;br /&gt;
Me.btnLast.Size = New System.Drawing.Size(60, 23)&lt;br /&gt;
Me.btnLast.TabIndex = 6&lt;br /&gt;
Me.btnLast.Text = "Last"&lt;br /&gt;
Me.btnLast.UseVisualStyleBackColor = True&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'btnFirst&lt;br /&gt;
'&lt;br /&gt;
Me.btnFirst.Location = New System.Drawing.Point(113, 190)&lt;br /&gt;
Me.btnFirst.Name = "btnFirst"&lt;br /&gt;
Me.btnFirst.Size = New System.Drawing.Size(60, 23)&lt;br /&gt;
Me.btnFirst.TabIndex = 3&lt;br /&gt;
Me.btnFirst.Text = "First"&lt;br /&gt;
Me.btnFirst.UseVisualStyleBackColor = True&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'btnDisplay&lt;br /&gt;
'&lt;br /&gt;
Me.btnDisplay.Location = New System.Drawing.Point(4, 190)&lt;br /&gt;
Me.btnDisplay.Name = "btnDisplay"&lt;br /&gt;
Me.btnDisplay.Size = New System.Drawing.Size(58, 23)&lt;br /&gt;
Me.btnDisplay.TabIndex = 2&lt;br /&gt;
Me.btnDisplay.Text = "Refresh"&lt;br /&gt;
Me.btnDisplay.UseVisualStyleBackColor = True&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'btnPrevious&lt;br /&gt;
'&lt;br /&gt;
Me.btnPrevious.Location = New System.Drawing.Point(179, 190)&lt;br /&gt;
Me.btnPrevious.Name = "btnPrevious"&lt;br /&gt;
Me.btnPrevious.Size = New System.Drawing.Size(60, 23)&lt;br /&gt;
Me.btnPrevious.TabIndex = 4&lt;br /&gt;
Me.btnPrevious.Text = "Previous"&lt;br /&gt;
Me.btnPrevious.UseVisualStyleBackColor = True&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'btnNext&lt;br /&gt;
'&lt;br /&gt;
Me.btnNext.Location = New System.Drawing.Point(245, 190)&lt;br /&gt;
Me.btnNext.Name = "btnNext"&lt;br /&gt;
Me.btnNext.Size = New System.Drawing.Size(60, 23)&lt;br /&gt;
Me.btnNext.TabIndex = 5&lt;br /&gt;
Me.btnNext.Text = "Next"&lt;br /&gt;
Me.btnNext.UseVisualStyleBackColor = True&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'btnNew&lt;br /&gt;
'&lt;br /&gt;
Me.btnNew.Location = New System.Drawing.Point(17, 384)&lt;br /&gt;
Me.btnNew.Name = "btnNew"&lt;br /&gt;
Me.btnNew.Size = New System.Drawing.Size(75, 23)&lt;br /&gt;
Me.btnNew.TabIndex = 13&lt;br /&gt;
Me.btnNew.Text = "New"&lt;br /&gt;
Me.btnNew.UseVisualStyleBackColor = True&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'btnDelete&lt;br /&gt;
'&lt;br /&gt;
Me.btnDelete.Location = New System.Drawing.Point(177, 384)&lt;br /&gt;
Me.btnDelete.Name = "btnDelete"&lt;br /&gt;
Me.btnDelete.Size = New System.Drawing.Size(75, 23)&lt;br /&gt;
Me.btnDelete.TabIndex = 15&lt;br /&gt;
Me.btnDelete.Text = "Delete"&lt;br /&gt;
Me.btnDelete.UseVisualStyleBackColor = True&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'btnEdit&lt;br /&gt;
'&lt;br /&gt;
Me.btnEdit.Location = New System.Drawing.Point(98, 384)&lt;br /&gt;
Me.btnEdit.Name = "btnEdit"&lt;br /&gt;
Me.btnEdit.Size = New System.Drawing.Size(75, 23)&lt;br /&gt;
Me.btnEdit.TabIndex = 18&lt;br /&gt;
Me.btnEdit.Text = "Edit"&lt;br /&gt;
Me.btnEdit.UseVisualStyleBackColor = True&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'btnSave&lt;br /&gt;
'&lt;br /&gt;
Me.btnSave.Location = New System.Drawing.Point(312, 384)&lt;br /&gt;
Me.btnSave.Name = "btnSave"&lt;br /&gt;
Me.btnSave.Size = New System.Drawing.Size(75, 23)&lt;br /&gt;
Me.btnSave.TabIndex = 15&lt;br /&gt;
Me.btnSave.Text = "Save"&lt;br /&gt;
Me.btnSave.UseVisualStyleBackColor = True&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'btnCancel&lt;br /&gt;
'&lt;br /&gt;
Me.btnCancel.Location = New System.Drawing.Point(393, 384)&lt;br /&gt;
Me.btnCancel.Name = "btnCancel"&lt;br /&gt;
Me.btnCancel.Size = New System.Drawing.Size(75, 23)&lt;br /&gt;
Me.btnCancel.TabIndex = 16&lt;br /&gt;
Me.btnCancel.Text = "Cencel"&lt;br /&gt;
Me.btnCancel.UseVisualStyleBackColor = True&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
'Form1&lt;br /&gt;
'&lt;br /&gt;
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)&lt;br /&gt;
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font&lt;br /&gt;
Me.ClientSize = New System.Drawing.Size(487, 417)&lt;br /&gt;
Me.Controls.Add(Me.btnCancel)&lt;br /&gt;
Me.Controls.Add(Me.btnEdit)&lt;br /&gt;
Me.Controls.Add(Me.btnSave)&lt;br /&gt;
Me.Controls.Add(Me.btnDelete)&lt;br /&gt;
Me.Controls.Add(Me.btnNew)&lt;br /&gt;
Me.Controls.Add(Me.SplitContainer1)&lt;br /&gt;
Me.Name = "Form1"&lt;br /&gt;
Me.Text = "Form1"&lt;br /&gt;
Me.SplitContainer1.Panel1.ResumeLayout(False)&lt;br /&gt;
Me.SplitContainer1.Panel1.PerformLayout()&lt;br /&gt;
Me.SplitContainer1.Panel2.ResumeLayout(False)&lt;br /&gt;
Me.SplitContainer1.Panel2.PerformLayout()&lt;br /&gt;
CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).EndInit()&lt;br /&gt;
Me.SplitContainer1.ResumeLayout(False)&lt;br /&gt;
CType(Me.dg, System.ComponentModel.ISupportInitialize).EndInit()&lt;br /&gt;
Me.ResumeLayout(False)&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Friend WithEvents txtStudent_ID As System.Windows.Forms.TextBox&lt;br /&gt;
Friend WithEvents txtFirstName As System.Windows.Forms.TextBox&lt;br /&gt;
Friend WithEvents txtLastName As System.Windows.Forms.TextBox&lt;br /&gt;
Friend WithEvents Label1 As System.Windows.Forms.Label&lt;br /&gt;
Friend WithEvents Label2 As System.Windows.Forms.Label&lt;br /&gt;
Friend WithEvents Label3 As System.Windows.Forms.Label&lt;br /&gt;
Friend WithEvents SplitContainer1 As System.Windows.Forms.SplitContainer&lt;br /&gt;
Friend WithEvents dg As System.Windows.Forms.DataGridView&lt;br /&gt;
Friend WithEvents btnDisplay As System.Windows.Forms.Button&lt;br /&gt;
Friend WithEvents btnFirst As System.Windows.Forms.Button&lt;br /&gt;
Friend WithEvents btnPrevious As System.Windows.Forms.Button&lt;br /&gt;
Friend WithEvents btnNext As System.Windows.Forms.Button&lt;br /&gt;
Friend WithEvents btnLast As System.Windows.Forms.Button&lt;br /&gt;
Friend WithEvents btnNew As System.Windows.Forms.Button&lt;br /&gt;
Friend WithEvents txtSearch As System.Windows.Forms.TextBox&lt;br /&gt;
Friend WithEvents btnDelete As System.Windows.Forms.Button&lt;br /&gt;
Friend WithEvents btnEdit As System.Windows.Forms.Button&lt;br /&gt;
Friend WithEvents Label4 As System.Windows.Forms.Label&lt;br /&gt;
Friend WithEvents btnSave As System.Windows.Forms.Button&lt;br /&gt;
Friend WithEvents btnCancel As System.Windows.Forms.Button&lt;br /&gt;
&lt;br /&gt;
End Class&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;b&gt;เขียนคำสั่งภายใต้ไฟล์ Form1.vb&lt;/b&gt; &lt;br /&gt;
จากนั้นให้ไปดับเบิ้ลคลิกที่ฟอร์ม Form1.vb เพื่อเขียนโค้ดคำสั่งภาษา VB &lt;br /&gt;
ให้นำคำสั่งด้านล่างไปแทนคำสั่ง VB เดิมได้เลย&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt; Source Code -&amp;gt; Form1.vb&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
Imports System.Data&lt;br /&gt;
Imports System.Data.SqlClient&lt;br /&gt;
&lt;br /&gt;
Public Class Form1&lt;br /&gt;
&lt;br /&gt;
Private ds As New DataSet()&lt;br /&gt;
'private cs = ConfigurationSettings.AppSettings["conMyData"]&lt;br /&gt;
Private cs = New SqlConnection("Data Source=.\SQLEXPRESS1;Initial Catalog=MYDATA;Integrated Security=True")&lt;br /&gt;
Private da = New SqlDataAdapter()&lt;br /&gt;
Private tblStudentBS = New BindingSource() 'สำหรับผูก dataset กับ object&lt;br /&gt;
&lt;br /&gt;
' For Add, Edit Record&lt;br /&gt;
Private lNew As Boolean&lt;br /&gt;
Private cKey As String&lt;br /&gt;
&lt;br /&gt;
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load&lt;br /&gt;
DisplayData()&lt;br /&gt;
'ผูก ds กับ object&lt;br /&gt;
tblStudentBS.DataSource = ds.Tables("tblStudent") 'tblStudentBS.DataSource = ds.Tables(0)&lt;br /&gt;
txtStudent_ID.DataBindings.Add(New Binding("Text", tblStudentBS, "Student_ID"))&lt;br /&gt;
txtFirstName.DataBindings.Add(New Binding("Text", tblStudentBS, "FirstName"))&lt;br /&gt;
txtLastName.DataBindings.Add(New Binding("Text", tblStudentBS, "LastName"))&lt;br /&gt;
&lt;br /&gt;
Me.SplitContainer1.Panel2.Enabled = False&lt;br /&gt;
&lt;br /&gt;
Me.btnSave.Enabled = False&lt;br /&gt;
Me.btnCancel.Enabled = False&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub txtSearch_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSearch.TextChanged&lt;br /&gt;
DisplayData()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub btnDisplay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisplay.Click&lt;br /&gt;
DisplayData()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click&lt;br /&gt;
tblStudentBS.MoveFirst()&lt;br /&gt;
dgUpdate()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click&lt;br /&gt;
tblStudentBS.MovePrevious()&lt;br /&gt;
dgUpdate()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click&lt;br /&gt;
tblStudentBS.MoveNext()&lt;br /&gt;
dgUpdate()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click&lt;br /&gt;
tblStudentBS.MoveLast()&lt;br /&gt;
dgUpdate()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub btnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNew.Click&lt;br /&gt;
txtStudent_ID.Text = ""&lt;br /&gt;
txtFirstName.Text = ""&lt;br /&gt;
txtLastName.Text = ""&lt;br /&gt;
lNew = True&lt;br /&gt;
onEntry()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click&lt;br /&gt;
Try&lt;br /&gt;
cKey = ds.Tables("tblStudent").Rows(tblStudentBS.Position)(0) 'Column 0 is key field&lt;br /&gt;
lNew = False&lt;br /&gt;
onEntry()&lt;br /&gt;
Catch ex As Exception&lt;br /&gt;
'&lt;br /&gt;
End Try&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub onEntry()&lt;br /&gt;
SplitContainer1.Panel2.Enabled = True&lt;br /&gt;
txtStudent_ID.Focus()&lt;br /&gt;
SplitContainer1.Panel1.Enabled = False&lt;br /&gt;
btnNew.Enabled = False&lt;br /&gt;
btnEdit.Enabled = False&lt;br /&gt;
btnDelete.Enabled = False&lt;br /&gt;
btnSave.Enabled = True&lt;br /&gt;
btnCancel.Enabled = True&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub offEntry()&lt;br /&gt;
SplitContainer1.Panel1.Enabled = True&lt;br /&gt;
txtSearch.Focus()&lt;br /&gt;
SplitContainer1.Panel2.Enabled = False&lt;br /&gt;
btnNew.Enabled = True&lt;br /&gt;
btnEdit.Enabled = True&lt;br /&gt;
btnDelete.Enabled = True&lt;br /&gt;
btnSave.Enabled = False&lt;br /&gt;
btnCancel.Enabled = False&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click&lt;br /&gt;
Try&lt;br /&gt;
Dim dr As DialogResult&lt;br /&gt;
dr = MessageBox.Show("Are Your sure?" &amp;amp; vbLf &amp;amp; "There is no undo once data is deleted", "confirm Deletion", MessageBoxButtons.YesNo)&lt;br /&gt;
If dr = DialogResult.Yes Then&lt;br /&gt;
da.DeleteCommand = New SqlCommand("DELETE FROM tblStudent WHERE Student_Id = @Student_Id", cs)&lt;br /&gt;
da.DeleteCommand.Parameters.Add("@Student_Id", SqlDbType.VarChar).Value = ds.Tables("tblStudent").Rows(tblStudentBS.Position)(0)&lt;br /&gt;
cs.Open()&lt;br /&gt;
da.DeleteCommand.ExecuteNonQuery()&lt;br /&gt;
Else&lt;br /&gt;
MessageBox.Show("Cancel Delete")&lt;br /&gt;
End If&lt;br /&gt;
Catch ex As Exception&lt;br /&gt;
'&lt;br /&gt;
Finally&lt;br /&gt;
cs.Close()&lt;br /&gt;
DisplayData()&lt;br /&gt;
End Try&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub DisplayData()&lt;br /&gt;
da.SelectCommand = New SqlCommand("SELECT * FROM tblStudent WHERE Student_id LIKE '%" &amp;amp; txtSearch.Text.Trim.ToString &amp;amp; "%' ORDER BY Student_Id", cs)&lt;br /&gt;
ds.Clear()&lt;br /&gt;
da.Fill(ds, "tblStudent")&lt;br /&gt;
dg.DataSource = tblStudentBS ' dg.DataSource = ds.Tables(0)&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub dgUpdate()&lt;br /&gt;
dg.ClearSelection()&lt;br /&gt;
dg.Rows(tblStudentBS.Position).Selected = True&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click&lt;br /&gt;
If lNew Then&lt;br /&gt;
RecordAdd()&lt;br /&gt;
Else&lt;br /&gt;
RecordEdit()&lt;br /&gt;
End If&lt;br /&gt;
offEntry()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click&lt;br /&gt;
DisplayData()&lt;br /&gt;
If lNew Then&lt;br /&gt;
' nothing&lt;br /&gt;
Else&lt;br /&gt;
' Set the Position property to the results of the Find method.&lt;br /&gt;
Dim itemFound As Integer = tblStudentBS.Find("Student_Id", cKey)&lt;br /&gt;
tblStudentBS.Position = itemFound&lt;br /&gt;
End If&lt;br /&gt;
offEntry()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub RecordAdd()&lt;br /&gt;
Try&lt;br /&gt;
''-------- for show connection ---------&lt;br /&gt;
'cs.Open()&lt;br /&gt;
'MessageBox.Show(cs.State.ToString())&lt;br /&gt;
'cs.Close()&lt;br /&gt;
''-------- for show connection ---------&lt;br /&gt;
&lt;br /&gt;
Dim findID As String = txtStudent_ID.Text&lt;br /&gt;
da.InsertCommand = New SqlCommand("INSERT INTO tblStudent VALUES(@Student_Id, @FirstName, @LastName)", cs)&lt;br /&gt;
da.InsertCommand.Parameters.Add("@Student_Id", SqlDbType.VarChar).Value = txtStudent_ID.Text&lt;br /&gt;
da.InsertCommand.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text&lt;br /&gt;
da.InsertCommand.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text&lt;br /&gt;
cs.Open()&lt;br /&gt;
da.InsertCommand.ExecuteNonQuery()&lt;br /&gt;
&lt;br /&gt;
' Set the Position property to the results of the Find method.&lt;br /&gt;
Dim itemFound As Integer = tblStudentBS.Find("Student_Id", findID)&lt;br /&gt;
tblStudentBS.Position = itemFound&lt;br /&gt;
Catch ex As Exception&lt;br /&gt;
MessageBox.Show(ex.Message)&lt;br /&gt;
Finally&lt;br /&gt;
cs.Close()&lt;br /&gt;
DisplayData()&lt;br /&gt;
End Try&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub RecordEdit()&lt;br /&gt;
Dim x As Integer&lt;br /&gt;
Try&lt;br /&gt;
da.UpdateCommand = New SqlCommand("UPDATE tblStudent SET Student_Id = @Student_Id, FirstName = @FirstName, LastName = @LastName WHERE Student_id = @Student_id_old", cs)&lt;br /&gt;
da.UpdateCommand.Parameters.Add("@Student_id", SqlDbType.VarChar).Value = txtStudent_ID.Text&lt;br /&gt;
da.UpdateCommand.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text&lt;br /&gt;
da.UpdateCommand.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text&lt;br /&gt;
da.UpdateCommand.Parameters.Add("@Student_id_old", SqlDbType.VarChar).Value = cKey 'ds.Tables("tblStudent").Rows(tblStudentBS.Position)(0)&lt;br /&gt;
cs.Open()&lt;br /&gt;
x = da.UpdateCommand.ExecuteNonQuery()&lt;br /&gt;
&lt;br /&gt;
'&lt;br /&gt;
Catch ex As Exception&lt;br /&gt;
MessageBox.Show(ex.Message)&lt;br /&gt;
Finally&lt;br /&gt;
cs.Close()&lt;br /&gt;
DisplayData()&lt;br /&gt;
'If (x &amp;gt;= 1) Then&lt;br /&gt;
' Set the Position property to the results of the Find method.&lt;br /&gt;
Dim itemFound As Integer = tblStudentBS.Find("Student_Id", cKey)&lt;br /&gt;
tblStudentBS.Position = itemFound&lt;br /&gt;
'End If&lt;br /&gt;
&lt;br /&gt;
End Try&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
End Class&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;
Create Database in SQL Server : Database Name = MYDATA&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;
Create Table : Table Name = tblStudent&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;USE [MYDATA]
GO

CREATE TABLE [dbo].[tblStudent](
[STUDENT_ID] [varchar](13) NOT NULL,
[FIRSTNAME] [varchar](50) NULL,
[LASTNAME] [varchar](50) NULL,
CONSTRAINT [PK_tblStudent] PRIMARY KEY CLUSTERED
(
[STUDENT_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

&lt;/pre&gt;สวัสดี ขอให้สนุกกับการสร้างฟอร์มป้อนข้อมูล&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-9032037135739518262?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Nca7lTc_SPKibR0daNPuCuV0Lc8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Nca7lTc_SPKibR0daNPuCuV0Lc8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Nca7lTc_SPKibR0daNPuCuV0Lc8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Nca7lTc_SPKibR0daNPuCuV0Lc8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/WEBqHjjr8Zo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/9032037135739518262/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2010/12/vbnet-one-table-data-entry.html#comment-form" title="1 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/9032037135739518262?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/9032037135739518262?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/WEBqHjjr8Zo/vbnet-one-table-data-entry.html" title="VB.Net One Table Data Entry" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_43-jGEeBoI4/TQq9PfgXKdI/AAAAAAAAAiI/iyd10lyUnPk/s72-c/formentry01.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2010/12/vbnet-one-table-data-entry.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4CRH8zfCp7ImA9WhZTEkg.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-680461734154571730</id><published>2010-12-01T08:22:00.020+07:00</published><updated>2011-03-16T13:29:25.184+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-16T13:29:25.184+07:00</app:edited><title>VB.Net กับ DataTable</title><content type="html">เมื่อกล่าวถึง DataTable ทำให้นึกถึงการติดต่อกับฐานข้อมูล แต่จริง ๆ ตัวมันเองมิได้มีอะไรเกี่ยวข้องกับฐานข้อมูลแม้แต่น้อย มันเป็นแค่เพียงทางผ่าน ผ่านแล้วผ่านไป โดยตัวมันเองจะเก็บข้อมูลไว้ในเมมโมรี หรือหน่วยความจำ เป็นพื้นที่เก็บข้อมูลชั่วคราว ซึ่งจุดนี้เองทำให้เราสามารถใช้ประโยชน์จาก DataTable ได้หลากหลายตามใจปรารถนา &lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;มาทำความรู้จักกับ DataTable กันก่อน&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
DataTable คือ คลาสตัวหนึ่งที่เก็บไว้ภายใต้เนมสเปสที่ชื่อ System.Data ดังนั้นเวลาจะใช้งาน ต้องทำการ Imports มาก่อนเสมอ&lt;br /&gt;
&lt;br /&gt;
Imports System.Data&lt;br /&gt;
&lt;br /&gt;
ในคลาส DataTable ประกอบไปด้วย property (อยากแปลเป็นภาษาไทยเหมือนกัน) ที่สำคัญสองตัวคือ Columns และ Rows&lt;br /&gt;
- &lt;span style="font-weight: bold;"&gt;Column&lt;/span&gt;s คือการประกาศให้ชาวบ้านรู้ว่า เฮ้ย ใน DataTable นี้มีคอลัมน์ชื่อว่าอะไร ประเภทของข้อมูลเป็นอย่างไร เหมือนกับเราสร้างตาราง (Table) แล้วกำหนดคอลัมน์ลงในในตาราง ของฐานข้อมูล&lt;br /&gt;
- &lt;span style="font-weight: bold;"&gt;Rows&lt;/span&gt; เป็นส่วนที่ใช้ในการเก็บข้อมูล ซึ่งก็ต้องตรงกับคอลัมน์ที่ประกาศไว้ด้วย&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-style: italic;"&gt;ปุจจฉา&lt;/span&gt; แล้วจะสร้าง DataTable จะต้องเขียนคำสั่งอย่างไร ?&lt;br /&gt;
&lt;span style="font-style: italic;"&gt;วิสัชนา&lt;/span&gt; คำสั่งในการสร้าง DataTable ก็ง่ายนิดเดียว ดังนี้&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;คำสั่งสร้างออบเจ็กต์ DataTable&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
การสร้างออบเจกต์ของ DataTable แล้วตั้งชื่อตารางว่า "Products" &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Dim dt As New Data.DataTable("Products")    &lt;/pre&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;การกำหนดคอลัมน์และประเภทของข้อมูล&lt;/span&gt;&lt;br /&gt;
หลังจาาสร้างออบเจกต์ของ DataTable แล้ว ขั้นต่อไปก็ต้องกำหนดคอลัมน์ &lt;br /&gt;
เช่น เราต้องการสร้างคอลัมน์ภายใต้ DataTable (dt) ที่สร้างไว้จำนวน 3 คอลัมน์ ประกอบด้วย &lt;br /&gt;
รหัสสินค้า ชนิดข้อมูลเป็น String, ชื่อสินค้า ชนิดข้อมูลเป็น String , ราคาสินค้า ชนิดข้อมูลเป็นตัวเลขมีทศนิยม &lt;br /&gt;
&lt;br /&gt;
เขียนคำสั่งดังนี้&lt;br /&gt;
&lt;pre&gt;dt.Columns.Add("ProductCode", GetType(System.String))
dt.Columns.Add("ProductName", GetType(System.String))
dt.Columns.Add("ProductPrice", GetType(System.Decimal))

' กำหนดให้ ProductCode มีค่าไม่ซ้ำกัน  และเป็น Primary Key
dt.Columns( "ProductCode").Unique = true
dt.PrimaryKey = New DataColumn() { dt.Columns("ProductCode") }   
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;การเพิ่มแถวข้อมูลเข้าสู่ DataTable&lt;/b&gt;&lt;br /&gt;
ก่อนอื่นเราต้องประกาศตัวแปร row กำหนดให้เป็นประเภท DataRow ก่อน&lt;br /&gt;
&lt;pre&gt;Dim row As DataRow&lt;/pre&gt;&lt;br /&gt;
จากนั้นก็ทำการเพิ่มข้อมูลแถวใหม่เข้าไป ตามคอลัมน์ที่ได้สร้างไว้ ดังนี้&lt;br /&gt;
&lt;pre&gt;row = dt.NewRow()
row.Item("ProductCode") = "000001"
row.Item("ProductName") = "Computer Note Book"
row.Item("Productprice") = 25600.00
dt.Row.Add(row)
&lt;/pre&gt;หากมีแถวอื่น ๆ อีกก็ทำลักษณะเดียวกัน เช่น&lt;br /&gt;
&lt;pre&gt;row = dt.NewRow()
row.Item("ProductCode") = "000002"
row.Item("ProductName") = "Laser Jet Printer"
row.Item("Productprice") = 3000.00
dt.Row.Add(row)
&lt;/pre&gt;&lt;br /&gt;
เราสามารถเขียนได้อีกวิธีในการเพิ่มแถว ลักษณะนี้จะช่วยให้จำนวนบรรทัดลดลง &lt;br /&gt;
และเราไม่จำเป็นต้องประกาศตัวแปร Dim row As DataRow เหมือนตัวอย่างการเพิ่มข้อมูลก่อนหน้านี้&lt;br /&gt;
&lt;pre&gt;dt.Rows.Add(New Object() {"000003", "Web Camera", 450.00})
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;การค้นหาข้อมูลใน DataTable ภายใต้คอลัมน์ที่เป็น Primary Key &lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;Dim s As String = "000002"   'ข้อมูลที่จะค้นหา
Dim foundRow As DataRow = dt.Rows.Find(s)
   If foundRow IsNot Nothing Then
       MessageBox.Show(foundRow(0).ToString() &amp;amp; "   " &amp;amp; foundRow(1).ToString() &amp;amp; " " &amp;amp; foundRow(2).ToString())
   Else
       MessageBox.Show("A row with the primary key of " &amp;amp; s &amp;amp; " could not be found")
End If
&lt;/pre&gt;สำหรับการค้นหา เราสามารถใส่ได้ทั้งตัวอักษรพิมพ์ใหญ่หรือพิมพ์เล็กก็ได้ จะได้ค่าเหมือนกัน&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;การนับจำนวนแถวทั้งหมดใน DataTable&lt;/b&gt;&lt;br /&gt;
เราสามารถนับจำนวนแถวที่มีอยู่ใน DataTable ด้วยคำสั่ง&lt;br /&gt;
&lt;pre&gt;Dim TotRows As Integer
TotRows = dt.Rows.Count
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;การก๊อปปี้ DataTable&lt;/b&gt;&lt;br /&gt;
เราสามารถ copy ข้อมูลพร้อมกับโครงสร้างของ DataTable ได้ด้วยคำสั่ง&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;....
Dim dt1 As New Data.DataTable("Products_new")
dt1 = dt.Copy() 
&lt;/pre&gt;&lt;br /&gt;
แต่ถ้าต้องการเฉพาะ Structure ก็ต้องใช้ เมธอด Clone เช่น&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;....
Dim dt1 As New Data.DataTable("Products_new")
dt1 = dt.Clone()&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;'Add New Row &lt;/pre&gt;&lt;pre&gt;dt.Rows.Add(New Object() {"000003", "Web Camera", 450.00})&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;ล้างข้อมูลใน DataTable&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Dim dt1 As New Data.DataTable("Products_new")&lt;/pre&gt;&lt;pre&gt;dt1 = dt.Clone()&amp;nbsp;
'Add New Row 
dt.Rows.Add(New Object() {"000003", "Web Camera", 450.00})
...&lt;/pre&gt;&lt;pre&gt;'ทำการล้างข้อมูล ของตาราง Products_New ซึ่งอยู่ภายใต้ dt1&lt;/pre&gt;&lt;pre&gt;dt1.Clear()&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;การอ่านแถวทีละแถวทั้งหมดใน DataTable&lt;/b&gt;&lt;br /&gt;
เราสามารถวนลูปแสดงข้อมูลทั้งหมดใน DataTable ด้วยคำสั่ง&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Dim rows() As DataRow = dt.Select()
Dim i As Integer
For i = 0 To rows.GetUpperBound(0)
    Messagebox.Show( (rows(i)("ProductCode")) &amp;amp; "   " &amp;amp; _
                     (rows(i)("ProductName")) &amp;amp; "   " &amp;amp; _
                     (rows(i)("Productprice")))&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;   ' or&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;  
    Messagebox.Show( (rows(i)(0)) &amp;amp; "   " &amp;amp; _
                     (rows(i)(1)) &amp;amp; "   " &amp;amp; _
                     (rows(i)(2)))&amp;nbsp;&amp;nbsp;   &lt;/pre&gt;&lt;pre&gt;Next i 

&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;การลบแถวใน DataTable&lt;/b&gt;&lt;br /&gt;
วิธีแรก การลบโดยระบุแถวที่ต้องการลบได้โดยตรง &lt;br /&gt;
&lt;br /&gt;
ออปเจกต์_DataTable.Rows.Remove(แถวที่ต้องการลบ) &lt;br /&gt;
&lt;br /&gt;
เช่น&lt;br /&gt;
&lt;br /&gt;
dt.Rows.Remove(2)    ' ลบข้อมูลในแถวที่ 3   -- 0 คือแถวแรก&lt;br /&gt;
&lt;br /&gt;
อีกวิธี คือค้นหาข้อมูล แล้วค่อยลบข้อมูลที่หาพบออก วิธีนี้จะใช้บ่อย&lt;br /&gt;
&lt;br /&gt;
เช่น ต้องการลบข้อมูลรหัส 000002&lt;br /&gt;
&lt;pre&gt;'Delete
        Dim s As String = "000002"   'ข้อมูลที่จะค้นหา
        Dim foundRow As DataRow = dt.Rows.Find(s)
        If foundRow IsNot Nothing Then
            If MessageBox.Show("ต้องการลบรายการ" &amp;amp; (foundRow(0).ToString() &amp;amp;   _ 
                                           "   " &amp;amp; foundRow(1).ToString() &amp;amp;  _ 
                                           "   " &amp;amp; foundRow(2).ToString()),   _ 
                                           "ยืนยัน", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
                dt.Rows.Remove(foundRow)         ' ลบข้อมูล จากแถวที่หาพบ
                ' ลบเรียบร้อย   
                ' With Me.DataGridView1    ' แสดงสีสลับแถว
                '       .RowsDefaultCellStyle.BackColor = Color.Azure
                '       .AlternatingRowsDefaultCellStyle.BackColor = Color.White
                ' End With
                ' DataGridView1.DataSource = dt   ' นำข้อมูลไปแสดงใน DataGridView ใหม่
            End If
        Else
            MessageBox.Show("A row with the primary key of " &amp;amp; s &amp;amp; " could not be found")
        End If
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;การปรับปรุงข้อมูลใน DataTable&lt;/b&gt;&lt;br /&gt;
วิธีแรก การแก้ไขข้อมูลในแถวที่ต้องการ &lt;br /&gt;
&lt;br /&gt;
ออปเจกต์_DataTable.Rows(แถวที่ต้องการลบ).Item(คอลัมน์ที่ต้องการแก้ไข)&lt;br /&gt;
&lt;br /&gt;
เช่น ต้องการแก้ไขขัอมูลในแถวที่ 3 ในคอลัมน์ชื่อ ProductName &lt;br /&gt;
&lt;br /&gt;
dt.Rows(2).Item("ProductName") = "Notebook"     ' แก้ไขข้อมูลในแถวที่ 3   -- 0 คือแถวแรก&lt;br /&gt;
&lt;br /&gt;
หรือ ถ้าเรารู้ว่าคอลัมน์ ProductName คือคอลัมน์ลำดับที่เท่าไหร่ก็สามารถระบุเป็นตัวเลขได้ เช่น&lt;br /&gt;
&lt;br /&gt;
dt.Rows(2).Item(1) = "Notebook"     ' แก้ไขข้อมูลในคอลัมน์ที่ 2  -- 0 คือคอลัมน์แรก&lt;br /&gt;
' (ProductName : อ้างอิงจากตอนสร้าง DataTable) &lt;br /&gt;
&lt;br /&gt;
อีกวิธี คือค้นหาข้อมูล แล้วปรับปรุงข้อมูลในแถวที่เราค้นหาพบ วิธีนี้จะใช้บ่อยอีกเช่นกัน&lt;br /&gt;
&lt;br /&gt;
เช่น ค้นหารหัสสินค้า 000002 และแก้ไขข้อมูลชื่อสินค้าเป็น "UPS"&lt;br /&gt;
&lt;pre&gt;'Search and Replace
        Dim s As String = "000002"   'ข้อมูลที่จะค้นหา
        Dim foundRow As DataRow = dt.Rows.Find(s)
        If foundRow IsNot Nothing Then
                foundRow.Item("ProductName") = "UPS"
                'หรือ  --  dt.Rows.Find(s).Item("ProductName) = "UPS"
            End If
        Else
            MessageBox.Show("A row with the primary key of " &amp;amp; s &amp;amp; " could not be found")
        End If
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;การหาแถวที่มีการปรับปรุงใน DataTable&lt;/b&gt;&lt;br /&gt;
เวลาเราทำการปรับปรุงข้อมูลใน DataTable เราอาจมีความจำเป็นต้องการนำข้อมูลเหล่านั้นไปใช้ประโยชน์ ไม่ว่าจะเป็นนำไปปรับปรุงในตาราง SQL Server หรือ อื่น ๆ ๆ  ๆ&lt;br /&gt;
&lt;br /&gt;
--- *** ยังไม่จบ *** ---&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-680461734154571730?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PGVKhSe-Nt1ph6bCasVE8ENC8Ww/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PGVKhSe-Nt1ph6bCasVE8ENC8Ww/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PGVKhSe-Nt1ph6bCasVE8ENC8Ww/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PGVKhSe-Nt1ph6bCasVE8ENC8Ww/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/vhXIUyflwM4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/680461734154571730/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2010/12/vbnet-datatable.html#comment-form" title="2 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/680461734154571730?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/680461734154571730?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/vhXIUyflwM4/vbnet-datatable.html" title="VB.Net กับ DataTable" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><thr:total>2</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2010/12/vbnet-datatable.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08GRH46cCp7ImA9Wx9SEU4.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-6154163067757766676</id><published>2010-11-30T23:30:00.004+07:00</published><updated>2010-11-30T23:50:25.018+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-30T23:50:25.018+07:00</app:edited><title>VB.Net กับ Lambda</title><content type="html">คุณสามารถเขียนฟังก์ชัน (function) หรือ ซับรูทีน (sub) ภายใต้นิพจน์คำสั่ง (expression) lambda ได้อย่างง่าย ๆ เหมือนกับการกำหนดตัวแปร ซึ่งเราสามารถเขียนไว้ภายใต้ ฟังก์ชัน หรือ เมธอด ที่มีอยู่แล้ว&lt;br /&gt;การเขียนฟังก์ชันหรือซับรูทีนในนิพจน์คำสั่ง Lambda เราไม่ต้องตั้งชื่อให้กับฟังก์ชัน หรือ เมธอด ซึ่งก็เป็นข้อดีอีกอย่างหนึ่ง&lt;br /&gt;&lt;br /&gt;สำหรับวิธีการ จะขอยกตัวอย่างเปรียบเทียบระหว่าง การเขียนฟังก์ชัน ธรรมดา กับ การเขียนแบบ lambda&lt;br /&gt;&lt;br /&gt;&lt;u&gt;ตัวอย่าง&lt;/u&gt; ฟังก์ชันการหา Factorial&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Module Module1&lt;br /&gt;    Sub Main()&lt;br /&gt;           Dim nResult AS Long &lt;br /&gt;           nResult = Factorial(5)&lt;br /&gt;           Console.WriteLine(nResult)     'ค่าที่ได้คือ 120&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Function &lt;span style="font-style:italic;"&gt;Factorial&lt;/span&gt;(ByVal number As Long) As Long&lt;br /&gt;        If number &lt;= 1 Then&lt;br /&gt;            Return (1)&lt;br /&gt;        Else&lt;br /&gt;            Return number *&lt;span style="font-style:italic;"&gt; Factorial&lt;/span&gt;(number - 1)&lt;br /&gt;        End If&lt;br /&gt;   End Function&lt;br /&gt;End Module&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;u&gt;ตัวอย่าง&lt;/u&gt; ฟังก์ชันการหา Factorial โดยเขียนแบบนิพจน์คำสั่ง Lambda&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Module Module1&lt;br /&gt;    Sub Main()&lt;br /&gt;        Dim &lt;span style="font-style:italic;"&gt;nResult&lt;/span&gt; As Func(Of Long, Long) = Function(number As Long)&lt;br /&gt;                                                                    If number &lt;= 1 Then&lt;br /&gt;                                                                        Return (1)&lt;br /&gt;                                                                    Else&lt;br /&gt;                                                                        Return number * &lt;span style="font-style:italic;"&gt;nResult&lt;/span&gt;(number - 1)&lt;br /&gt;                                                                    End If&lt;br /&gt;                                                                End Function&lt;br /&gt;         Console.WriteLine(nResult.Invoke(5))     'ค่าที่ได้คือ 120&lt;br /&gt;      End Sub&lt;br /&gt;End Module&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-6154163067757766676?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aKET1Uo6FyppbflDunofjLh7geA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aKET1Uo6FyppbflDunofjLh7geA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aKET1Uo6FyppbflDunofjLh7geA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aKET1Uo6FyppbflDunofjLh7geA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/192fK_-kadA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/6154163067757766676/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2010/11/vbnet-lambda.html#comment-form" title="0 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/6154163067757766676?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/6154163067757766676?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/192fK_-kadA/vbnet-lambda.html" title="VB.Net กับ Lambda" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2010/11/vbnet-lambda.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQNRn08fip7ImA9Wx9WF0U.&quot;"><id>tag:blogger.com,1999:blog-2343321804163472494.post-2410784882929017624</id><published>2010-11-26T22:02:00.009+07:00</published><updated>2011-01-23T19:56:37.376+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-23T19:56:37.376+07:00</app:edited><title>VB.Net จับ Form ใส่ SplitContainer</title><content type="html">จับปูใส่กระด้ง กับ จับฟอร์มใส่ splitContainer เหมือนกันหรือไม่ ?&lt;br /&gt;
คงไม่เหมือนกันเพราะปูสามารถเดินหลุดออกจากกระด้งได้&lt;br /&gt;
แต่ ฟอร์มมันจะหลุดออกจาก SplitContainer ไม่ได้&lt;br /&gt;
&lt;br /&gt;
อ่านไปอ่านมาก็คงจะแปลกใจ ว่าทำไมถึงต้องมาจับฟอร์มใส่ไว้ใน SplitContainer&lt;br /&gt;
แต่เมื่ออ่านบทความนี้ แล้วทำตามจนสำเร็จ ก็คงจะไม่แปลกใจว่าทำไมเราจะต้องจับฟอร์มให้มันมาอยู่ใน SplitContainer&lt;br /&gt;
&lt;br /&gt;
เพราะเหตุเหรอ ก็อยากให้มันมาอยู่ในนี้ ยิ่งอ่านยิ่งงงใช่ไหม งั้นมาเริ่มทำกันเลยดีกว่า&lt;br /&gt;
&lt;pre&gt;1. เปิด Visual Studio 20xx จากนั้นคลิกเลือก New Project....
เลือก Visual Basic -&gt; Windows -&gt; Windows Forms Application
ที่ช่อง Name ป้อน myFormSplitContainer
&lt;/pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_43-jGEeBoI4/TO_OHnLpODI/AAAAAAAAAhA/56E79pU56bA/s1600/split01.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 232px;" src="http://1.bp.blogspot.com/_43-jGEeBoI4/TO_OHnLpODI/AAAAAAAAAhA/56E79pU56bA/s400/split01.png" alt="" id="BLOGGER_PHOTO_ID_5543876296488597554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;pre&gt;












2. ที่ฟอร์ม Designer ของ &lt;span style="font-weight: bold;"&gt;form1&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt; ให้ตกแตงฟอร์มตามตัวอย่าง
&lt;/pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_43-jGEeBoI4/TO_QsNcrB2I/AAAAAAAAAhQ/8b290dhuL5o/s1600/split02.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 269px;" src="http://1.bp.blogspot.com/_43-jGEeBoI4/TO_QsNcrB2I/AAAAAAAAAhQ/8b290dhuL5o/s400/split02.png" alt="" id="BLOGGER_PHOTO_ID_5543879124259112802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;- ลาก MenuStrip มาวางไว้ที่ฟอร์ม แล้วใส่รายการตามภาพด้านบน
- ลาก SplitContainer มาวางไว้ที่ฟอร์ม
- ลาก TreeView มาวางไว้ที่ SplitContainer ฝั่งด้านซ้าย (panel 1) แล้วจัดให้สวยงาม
- ให้กำหนด Property ของฟอร์ม ชื่อ &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;IsMdiContainer&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt; กำหนดให้เป็น &lt;span style="font-weight: bold;"&gt;True&lt;/span&gt;
&lt;/pre&gt;&lt;pre&gt;3. ที่ TreeView ให้คลิกที่แถบมุมบนด้านขวาเพื่อเปิดเมนู แล้วเลือก Edit Nodes...

- ทำการเพิ่ม Node เข้าไปโดยคลิกที่ Add Root หรือ Add Child
&lt;/pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_43-jGEeBoI4/TO_Tk1wc-gI/AAAAAAAAAhY/AnZ90w7WK9g/s1600/split03.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 319px;" src="http://1.bp.blogspot.com/_43-jGEeBoI4/TO_Tk1wc-gI/AAAAAAAAAhY/AnZ90w7WK9g/s400/split03.png" alt="" id="BLOGGER_PHOTO_ID_5543882296175426050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;












4. จากนั้นไปที่เมนู ดับเบิ้ลคลิกที่รายการเมนูชื่อ&lt;span style="font-weight: bold;"&gt; "เปิดฟอร์ม 1"&lt;/span&gt; (จะเข้าหน้าต่างเขียนคำสั่ง)
&lt;/pre&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_43-jGEeBoI4/TO_W97kkKyI/AAAAAAAAAhg/uXSeMvY0K48/s1600/split04.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 374px; height: 216px;" src="http://1.bp.blogspot.com/_43-jGEeBoI4/TO_W97kkKyI/AAAAAAAAAhg/uXSeMvY0K48/s400/split04.png" alt="" id="BLOGGER_PHOTO_ID_5543886025767791394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;ให้เขียนคำสั่ง ดังนี้

Private Sub เปดฟอรม1ToolStripMenuItem_Click(ByVal sender As System.Object,  _
ByVal e As System.EventArgs) Handles เปดฟอรม1ToolStripMenuItem.Click
     If myFindForm("form2") = False Then
          Dim frm As Form2
          frm = New Form2
          frm.TopLevel = False
          frm.Parent = Me.SplitContainer1.Panel2
          frm.Show()
          frm.BringToFront()
      End If
End Sub

Function myFindForm(ByVal frm As String) As Boolean
    For Each ctl As Control In Me.SplitContainer1.Panel2.Controls
        If ctl.Name.ToUpper = frm.ToUpper Then
            ctl.Show()
            ctl.BringToFront()
            Return True
        End If
   Next
   Return False
End Function

5. ให้ทำการสร้างฟอร์มขึ้นมาใหม่อีก 1 ฟอร์ม โดยกดปุ่ม Ctrl + Shift + A
จากนั้นคลิกที่ &lt;span style="font-weight: bold;"&gt;Windows Form -&gt; Windows Form &lt;/span&gt;แล้วตั้งชื่อฟอร์มว่า &lt;span style="font-weight: bold;"&gt;Form2.vb&lt;/span&gt; ดังภาพ
&lt;/pre&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_43-jGEeBoI4/TO_X8sMCT8I/AAAAAAAAAho/ZuS7iztvMeI/s1600/split05.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 309px;" src="http://2.bp.blogspot.com/_43-jGEeBoI4/TO_X8sMCT8I/AAAAAAAAAho/ZuS7iztvMeI/s400/split05.png" alt="" id="BLOGGER_PHOTO_ID_5543887103970136002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
















6. ตกแต่งหน้าจอของฟอร์ม&lt;span style="font-weight: bold;"&gt; form2.vb&lt;/span&gt; ตามชอบใจ หรือจะเลียนแบบ ตามภาพด้านล่าง
&lt;/pre&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_43-jGEeBoI4/TO_bXg15eHI/AAAAAAAAAhw/TStOr3uFdNI/s1600/split06.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 380px; height: 329px;" src="http://1.bp.blogspot.com/_43-jGEeBoI4/TO_bXg15eHI/AAAAAAAAAhw/TStOr3uFdNI/s400/split06.png" alt="" id="BLOGGER_PHOTO_ID_5543890863315843186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;

















7. ทำการ run โปรแกรมที่เขียนไว้โดยกดปุ่ม &lt;span style="font-weight: bold;"&gt;F5&lt;/span&gt;
จากนั้นก็ทดสอบเลือกเมนู &lt;span style="font-weight: bold;"&gt;ฟอร์ม -&gt; เปิดฟอร์ม &lt;/span&gt;1 ก็จะได้ผลลัพธ์ดังภาพ
&lt;/pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_43-jGEeBoI4/TO_cqv9IdwI/AAAAAAAAAh4/Jec2La9wxiw/s1600/split07.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 326px;" src="http://4.bp.blogspot.com/_43-jGEeBoI4/TO_cqv9IdwI/AAAAAAAAAh4/Jec2La9wxiw/s400/split07.png" alt="" id="BLOGGER_PHOTO_ID_5543892293301860098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;

















ถ้าหากผู้อ่านทำตามขั้นตอนมาถึงจนได้ผลลัพธ์ที่เห็นดังภาพ ก็คงหมดข้อสงสัยว่าทำไม่ต้องจับฟอร์มใส่ SplitContainer

โชคดี มีวิธีใช้ฟอร์มแบบใหม่ ๆ
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;สงวนลิขสิทธิ์ ห้ามนำไปเผยแพร่ก่อนได้รับอนุญาติ&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2343321804163472494-2410784882929017624?l=kasem-mesak.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hBMqek7AmNlc-rjnSRydGqdPyy8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hBMqek7AmNlc-rjnSRydGqdPyy8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hBMqek7AmNlc-rjnSRydGqdPyy8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hBMqek7AmNlc-rjnSRydGqdPyy8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/efVtQ/~4/RvjghRtLW6g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kasem-mesak.blogspot.com/feeds/2410784882929017624/comments/default" title="ส่งความคิดเห็น" /><link rel="replies" type="text/html" href="http://kasem-mesak.blogspot.com/2010/11/vbnet-form-splitcontainer.html#comment-form" title="2 ความคิดเห็น" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/2410784882929017624?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2343321804163472494/posts/default/2410784882929017624?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/efVtQ/~3/RvjghRtLW6g/vbnet-form-splitcontainer.html" title="VB.Net จับ Form ใส่ SplitContainer" /><author><name>เกษม</name><uri>http://www.blogger.com/profile/03223085345729627028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/-yKRGv6kv-60/TyOwbFN5ebI/AAAAAAAAA0Y/x4T_UQMHUCA/s220/kasem_dima.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_43-jGEeBoI4/TO_OHnLpODI/AAAAAAAAAhA/56E79pU56bA/s72-c/split01.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://kasem-mesak.blogspot.com/2010/11/vbnet-form-splitcontainer.html</feedburner:origLink></entry></feed>

