Delegate là gì? Nó có nghĩa là “ủy quyền”, hay là “ủy thác” nó tựa tựa như là con trỏ hàm trong C/C++ vậy.
-Cách làm nà:
-Ta sẽ tạo 2 form A ,B
+A có 1 label để hiện thị chuỗi nhập vào từ form B,và 1 cái button để tạo form B.
+B có 1 textbox để nhập chuỗi cần truyền cho A,và 1 button để truyền.
-Đối với form B code:
-Ta sẽ tạo 2 form A ,B
+A có 1 label để hiện thị chuỗi nhập vào từ form B,và 1 cái button để tạo form B.
+B có 1 textbox để nhập chuỗi cần truyền cho A,và 1 button để truyền.
-Đối với form B code:
01 | public partial class B : Form |
02 | { |
03 | public B() |
04 | { |
05 | InitializeComponent(); |
06 | this .button1.Click += new EventHandler(button1_Click); |
07 | } |
08 | |
09 | public delegate void SEND( string s); //delegate tham chiếu tới 1 hàm kiểu void tênham(string s); |
10 | public SEND sender; //1 biến kiểu SEND |
11 | void button1_Click( object sender, EventArgs e) |
12 | { |
13 | this .sender(textBox1.Text); //thực thị công việc của hàm mà sender tham chiếu tới. |
14 | } |
15 | private void B_Load( object sender, EventArgs e) |
16 | { |
17 | } |
18 | } |
+Đối với form A( main form)
01 | public partial class A : Form |
02 | { |
03 | public A() |
04 | { |
05 | InitializeComponent(); |
06 | this .button1.Click += new EventHandler(button1_Click); |
07 | } |
08 | void button1_Click( object sender, EventArgs e) |
09 | { |
10 | B tauit = new B(); //tạo 1 form B |
11 | tauit.sender = new B.SEND(getString); //cho sender của form mới tạo tham chiếu tới hàm getString của form A. |
12 | tauit.ShowDialog(); |
13 | } |
14 | public void getString( string s //1 hàm giống với kiểu hàm mà delegate bên form B có thể tham chiếu tới. |
15 | { |
16 | this .label1.Text=s; //Gán chuỗi s cho label của form A |
17 | } |
18 | } |
Như vậy sau khi tạo form B và nhập chuỗi vào textbox của form B ,rồi click button ở form B thì.
1 | void button1_Click( object sender, EventArgs e) |
2 | { |
3 | this .sender(textBox1.Text); //thực thị công việc của hàm mà sender tham chiếu tới. |
4 | } |
-->lúc này sender đang tham chiếu tới hàm getString của form A nên this.sender(textBox1.Text); cũng chính là gọi getString(textBox1.Text); mà hàm getString làm gì thì bạn rõ rồi chứ ?
0 nhận xét:
Đăng nhận xét