<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Người Thầm Lặng &#187; Kinh nghiệm</title>
	<atom:link href="http://nguoithamlang.wordpress.com/category/l%e1%ba%adp-trinh/kinh-nghi%e1%bb%87m/feed/" rel="self" type="application/rss+xml" />
	<link>http://nguoithamlang.wordpress.com</link>
	<description></description>
	<lastBuildDate>Wed, 22 Oct 2008 04:00:55 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>vi</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='nguoithamlang.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/cfd565475ec0f5c10ad20828f6e66078?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Người Thầm Lặng &#187; Kinh nghiệm</title>
		<link>http://nguoithamlang.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://nguoithamlang.wordpress.com/osd.xml" title="Người Thầm Lặng" />
		<item>
		<title>Delegate</title>
		<link>http://nguoithamlang.wordpress.com/2008/05/06/delegate/</link>
		<comments>http://nguoithamlang.wordpress.com/2008/05/06/delegate/#comments</comments>
		<pubDate>Tue, 06 May 2008 17:10:21 +0000</pubDate>
		<dc:creator>tranhoangtam</dc:creator>
				<category><![CDATA[Kinh nghiệm]]></category>
		<category><![CDATA[Kỹ Thuật]]></category>
		<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://tranhoangtam.wordpress.com/?p=28</guid>
		<description><![CDATA[
Sử Dụng Delegate Để Truyền Giá Trị  Giữa Các Form  
Để có thể viết được một ứng dụng phần  mềm, bạn phải biết cách truyền giá trị qua lại giữa các Form. Tuy nhiên, khi ta  muốn lấy giá trị từ nhiều Form khác, chắc chúng ta sẽ gặp rắc rối với những [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nguoithamlang.wordpress.com&blog=3771244&post=32&subd=nguoithamlang&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><span style="font-family:Arial;font-size:x-small;"></p>
<div><span>Sử Dụng Delegate Để Truyền Giá Trị  Giữa Các Form  </span></div>
<p><span>Để có thể viết được một ứng dụng phần  mềm, bạn phải biết cách truyền giá trị qua lại giữa các Form. Tuy nhiên, khi ta  muốn lấy giá trị từ nhiều Form khác, chắc chúng ta sẽ gặp rắc rối với những cách  làm thông thường. Delegate sẽ giúp chúng ta giải quyết vấn đề.</span> <br />
Trước hết, tôi sẽ trình bày cho các bạn các truyền giá trị theo cách thông  thường.</p>
<p>Dưới đây là giao diện của các Form:</p>
<p>Đây là giao diện của Form chính. có 2 textbox để hiển thị giá trị lấy từ các  Form khác. 2 button có chức năng hiển thị các form mà mình muốn lấy  giá trị.</p>
<p align="center"><img src="http://mail.google.com/mail/?ui=2&amp;ik=21835b0693&amp;attid=0.1&amp;disp=emb&amp;view=att&amp;th=119715392799c6c2" alt="Zensoft Website - Form Delegate" /></p>
<p>Còn đây là giao diện của Form 1, Gồm 1 textbox để nhập giá trị, nút button để  xác nhận giá trị đó và truyền giá trị được nhập trong ô textbox cho form  chính.</p>
<p align="center"><img src="http://mail.google.com/mail/?ui=2&amp;ik=21835b0693&amp;attid=0.2&amp;disp=emb&amp;view=att&amp;th=119715392799c6c2" alt="Zensoft Website - Using Delegate to Pass data between Forms." /></p>
<p>Tương tự như Form 1, Form 2 cũng gồm 1 textbox để nhập giá trị, nút button để  xác nhận giá trị đó và truyền giá trị được nhập trong ô textbox cho form  chính.</p>
<p align="center"><img src="http://mail.google.com/mail/?ui=2&amp;ik=21835b0693&amp;attid=0.3&amp;disp=emb&amp;view=att&amp;th=119715392799c6c2" alt="Zensoft Website - Truyền Giá Trị giữa các Form" /></p>
<p><strong>1. Với việc truyền giá trị thông thường:</strong></p>
<p>        &#8211; Trong Form Chính:</p>
<p><span style="color:#ffcc99;">// Ta khai báo  trường để lưu giá trị.</span></p>
<p><span style="color:#ffcc99;">private string _getFirstValue = null; </p>
<p>//  Thuộc tính này có nhiệm vụ lấy giá trị từ các Form khác.<br />
public string  GetFirstValue <br />
{<br />
      get<br />
      {<br />
              return _getFirstValue;<br />
      }</p>
<p>      set<br />
      {<br />
              _getFirstValue = value;<br />
      }<br />
}</span> </p>
<p>Và viết sự kiện cho nút  <strong>btnGetValue1</strong>:</p>
<p><span style="color:#ffcc99;">private void btnGetValue1_Click(object sender, EventArgs  e)<br />
{ <br />
        frmFirstValue first  = new frmFirstValue(); <br />
         first.ShowDialog();<br />
}</span></p>
<p>Và khi Form chính được hiển thị, ta phải hiển thị  nhận được thông qua các thuộc tính  GetFirstValue.         </p>
<p><span style="color:#ffcc99;">private void frmMain_Load(object sender, EventArgs e)<br />
{<br />
        txtFirstValue.Text =  GetFirstValue;<br />
         txtSecondValue.Text = GetSecondValue;<br />
}</span></p>
<p>         - Đối với Form 1: Ta  chỉ cần viết sự kiện cho Nút <strong>btnSend</strong>:</p>
<p><span style="color:#ffcc99;">private void btnSend_Click(object sender, EventArgs e)<br />
{<br />
         frmMain main = new  frmMain();<br />
          main.GetFirstValue = txtValue.Text;   // Truyền giá trị cho Form  chính thông qua thuộc  tính GetFirstValue.<br />
          main.ShowDialog(); <br />
         this.Hide();</p>
<p>}</span></p>
<p>việc khai báo và xử lý sự kiện đối với Form 2 tương tự. Nhưng trong trường  hợp này, khi lấy giá trị từ 2 Form khác nhau, cách truyền giá trị thông thường  này sẽ không thể làm được. Vậy cách khác, ta sẽ dùng Delegate để giải quyết vấn  đề:</p>
<p><strong>2. Sử Dụng Delegate:</strong></p>
<p>          &#8211; Dùng Delegate sẽ  giúp chúng ta quyết định xem hàm nào sẽ được trong lúc chạy. Về mặt kỹ thuật,  Delegate là một dạng tham chiếu được sử dụng để đóng gói 1 hàm với giá trị xác  thực và kiểu giá trị trả về.</p>
<p>          &#8211; Trong Form 1: Ta  khai báo Delegate có tên là <strong>PassData</strong> có 1 tham số kiểu string  và ko có giá trị trả về.</p>
<p><span style="color:#ffcc99;">public delegate void PassData(string value);<br />
public  PassData passData;</p>
<p>private void btnSend_Click(object sender, EventArgs  e)<br />
{ </p>
<p>       if (passData !=  null)<br />
       {<br />
                passData(txtValue.Text);<br />
       }<br />
       this.Hide();</p>
<p>}</span></p>
<p>        &#8211; Còn trong Form chính:  Ta viết Hàm GetFirstValue phải giống như khi khai báo Delegate: có 1 giá  trị truyền vào là kiểu chuỗi, và không có giá trị trả về.</p>
<p><span style="color:#ffcc99;">public void GetFirstValue(string value)<br />
{<br />
        txtFirstValue.Text = value;<br />
} <br />
</span></p>
<p>Ta viết sự kiện cho nút <strong>btnGetValue1:</strong></p>
<p><span style="color:#ffcc99;">private void btnGetValue1_Click(object sender, EventArgs  e)<br />
{</p>
<p>       frmFirstValue first = new  frmFirstValue();<br />
       first.passData = new  frmFirstValue.PassData(GetFirstValue);<br />
        first.Show();</p>
<p>}</span></p>
<p>Vấn đề đã được giải quyết rất đơn giản khi ta dùng  Delegate.</p>
<p></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/nguoithamlang.wordpress.com/32/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/nguoithamlang.wordpress.com/32/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nguoithamlang.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nguoithamlang.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nguoithamlang.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nguoithamlang.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nguoithamlang.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nguoithamlang.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nguoithamlang.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nguoithamlang.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nguoithamlang.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nguoithamlang.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nguoithamlang.wordpress.com&blog=3771244&post=32&subd=nguoithamlang&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://nguoithamlang.wordpress.com/2008/05/06/delegate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/77721cbd4a324208282caf89a25b0bfe?s=96&#38;d=identicon" medium="image">
			<media:title type="html">tranhoangtam</media:title>
		</media:content>

		<media:content url="http://mail.google.com/mail/?ui=2&#38;ik=21835b0693&#38;attid=0.1&#38;disp=emb&#38;view=att&#38;th=119715392799c6c2" medium="image">
			<media:title type="html">Zensoft Website - Form Delegate</media:title>
		</media:content>

		<media:content url="http://mail.google.com/mail/?ui=2&#38;ik=21835b0693&#38;attid=0.2&#38;disp=emb&#38;view=att&#38;th=119715392799c6c2" medium="image">
			<media:title type="html">Zensoft Website - Using Delegate to Pass data between Forms.</media:title>
		</media:content>

		<media:content url="http://mail.google.com/mail/?ui=2&#38;ik=21835b0693&#38;attid=0.3&#38;disp=emb&#38;view=att&#38;th=119715392799c6c2" medium="image">
			<media:title type="html">Zensoft Website - Truyền Giá Trị giữa các Form</media:title>
		</media:content>
	</item>
	</channel>
</rss>