Delegate là một trong khái niệm thân thuộc gì vào c# với nó cũng có rất nhiều công dụng. Vào nội dung nội dung bài viết này, mình xin trình làng một chức năng vô cùng có ích của delegate, đó là truyền dữ liệu.

Bạn đang xem: Cách dùng delegate để truyền dữ liệu giữa hai form

Chú ý

Để thuận tiện áp dụng các bề ngoài truyền dữ liệu, mình trợ thì gọi cách truyền tài liệu bằng delegate là truyền ngược và phương pháp truyền dữ liệu bằng Properties; Static variables; Constructor là phương pháp truyền xuôi.

Để dễ dàng hình dung, các bạn hãy tưởng như sau:

giải pháp truyền xuôi (1 chiều): A (bản thân bạn) gửi 1 mặt hàng cho B (bạn của bạn). Có nghĩa là A truyền mang lại B 1 vật gì đó. Biện pháp truyền ngược (2 chiều): A mong muốn lấy 1 mặt hàng từ B, A bảo B: "B ơi, mày chuyển giùm tao loại bút!". Sau đó, B bắt đầu đưa cây bút cho A. Tức là A chấm dứt việc bằng cách nhờ B.

Nếu có vẻ khó đọc (thực ra mình cũng đưa ra lấy một ví dụ tượng trưng), các bạn hãy bắt đầu với ví dụ sau đây.

Ví dụ

*

Khi click vào button Please login nghỉ ngơi Form1, Form2 đã xuất hiện. Nếu như nhập rất đầy đủ thông tin sống Form2 cùng click OK, Username và Password sẽ tiến hành truyền ngược lại Form1 với hiển thị ra Info.

Code

trước nhất là bắt sự kiện click của 2 button sinh hoạt Form2

Chú ý

Dòng 1: khai báo 1 delegate tất cả kiểu là void, tên là Login, nhận 2 tham số là string username với string password, 2 tham số này sẽ được truyền đi qua Form1.

Xem thêm: Quấn Trẻ Sơ Sinh Đến Khi Nào, Có Nên Quấn Trẻ Sơ Sinh Khi Ngủ Không


delegate <>;

Dòng 2: khai báo 1 event (sự kiện), sự kiện này còn có kiểu là delegate Login, thương hiệu là LoginEvent, sự kiện sẽ tiến hành gọi ngơi nghỉ Form2 cùng phát sinh sinh sống Form1.


event ;

Và trong sự kiện của button OK, thêm đoạn code sau:

Chú ý

dòng 6: khám nghiệm đã nhập khá đầy đủ Username và Password chưa, nếu chưa thì thông báo ra màn hình hiển thị và ra khỏi sự kiện. Mẫu 13: kiểm soát sự kiện LoginEvent tất cả khác null không, nếu như khác null tức là nó đã có gọi ở đâu đó (sự kiện này sẽ được gọi sinh sống Form1), thì cơ hội đó mới truyền 2 tham số username cùng password vào sự kiện này. Điều kiện else là chất vấn nếu sự khiếu nại LoginEvent chưa được gọi.

Ở form 1, bắt sự kiện click ngơi nghỉ button Please login với thêm đoạn code sau, để ý cách gọi sự kiện từ Form2

*

Cách điện thoại tư vấn sự kiện trọn vẹn như các bạn gọi sự kiện click của button (***), sau khi gõ += thì sẽ có một notification nhằm hướng dẫn các bạn chỉ yêu cầu bấm Tab nhằm thêm sự kiện, sau đó bấm Tab 1 lần nữa để tự động hóa phát sinh code. Bắt lại, sau thời điểm gõ +=, chúng ta bấm Tab gấp đôi liên tiếp.

(***) tất cả nhiều phương pháp để gọi sự kiện của 1 control, các chúng ta cũng có thể double click ở tab Events trong giao diện của Visual Studio, code sẽ auto phát sinh và thêm vào, hoặc các bạn có thể tự viết (gọi) sự kiện hệt như dòng 19. Bản chất của 2 giải pháp này là giống như nhau.

Bổ xung đoạn code như sau:

cách tiến hành frm2_LoginEvent chính là phương thức xẩy ra khi sự kiện LoginEvent được gọi ở Form2, username cùng password đã làm được truyền qua Form1, ta chỉ việc hiển thị nó ra label.

Và kết quả

*


*

Nếu các bạn có nhu cầu hiểu kỹ quy trình chạy của lịch trình và giải pháp sự kiện được call ra sao, hãy thử debug chương trình là sẽ thấy rõ.