30/09/2018, 23:35
Cách truyền dữ liệu giữa 2 form trong C#
- Cách thứ nhất dùng delegate
- Form1 viết:
public delegate void delPassData(TextBox text);
private void btnSend_Click(object sender, System.EventArgs e)
{
Form2 frm= new Form2();
delPassData del=new delPassData(frm.funData);
del(this.textBox1);
frm.Show();
}
- Form2 viết:
public void funData(TextBox txtForm1)
{
label1.Text = txtForm1.Text;
}
- Cách thứ 2 truyền trực tiếp
- Form1 viết:
private void btnSend_Click(object sender, System.EventArgs e)
{
Form2 frm= new Form2();
//delPassData del=new delPassData(frm.funData); // remove this line
frm.funData(this.textBox1.text()); // passing data directly to function
frm.Show();
}
Mọi người dùng em sự khác nhau giữa 2 cách này ạ
Và khi nào thì nên dùng delegate
Bài liên quan
Dùng delegate trong các trường hợp :
Muốn truyền dữ liệu ra bên ngoài để xử lý một cách tức thì nhưng trong nội tại không xác định rõ là thằng nào sẽ xử lý mà vẫn đảm bảo tính bao đóng.
Trong ví dụ trên bạn làm ngược. Lẽ ra delegate được khai báo tại form2 và hàm xử lý nằm trên form1. Trong ví dụ trên không cần thiết phải dùng delegate nên bạn chưa nhận ra sự khác biệt nhiều.
truyền dữ liệu trực tiếp mình toàn làm thông qua static class :))
Static class thì đảm bảo truyền được dữ liệu như biến tạm thời nhưng không đáp ứng được nhu cầu xử lý tức thì.
Bạn có thể cho mình ví dụ để thấy rõ sự khác nhau không
Bây giờ mình có 2 thiết bị đại diện cho 2 đối tượng độc lập hoàn toàn là con điện thoại và cái headphone.
2 cái này có cấu tạo được dấu kín bên trong vỏ -> nó là 2 đối tượng thể hiện tính bao đóng.
Con điện thoại thì phát tín hiệu cho headphone nhưng nó không biết cụ thể là con headphone nào và con headphone cũng không biết được cắm vào con điện thoại nào. Làm sao giờ ??
Thế nên nhà sx điện thoại đã có chuẩn audio 3.5 để truyền tín hiệu nhạc qua-> tương tự ta khai báo 1 kiểu delegate.
để truyền tín hiệu nhạc ra ngoài thì con điện thoại phải bố trí 1 cổng 3.5-> ta khai báo 1 delegate bên trong con điện thoại.
Bây giờ phần nghe nhạc trên điện thoại sẽ đẩy tín hiệu nhạc ra ngoài-> Ta đẩy dữ lieu qua delegate
Xong phần điện thoại. đến phần Headphone.
đương nhiên headphone cũng phải có chức năng lấy được nhạc theo chuẩn 3.5 và phát ra loa.
Headphone muốn lấy tín hiệu thì đương nhiên cũng phải kết nối vào điện thoại qua cổng 3.5. Ta xác lập kết nối ở một chỗ nào đó.
–> Con điện thoại đã ủy quyền cho con Headphone phát tín hiệu nhạc ( dữ lieu) mà con điện thoại đã truyền qua cổng 3.5 (delegate). Tiếng ở headphone được phát tức thời, còn kết cấu 2 thằng cũng được dấu kín và toàn vẹn (bao đóng), 2 thằng cũng không hề biết nhau.