Xin add duyệt bài giup em ạ:))
Khi nhấn click vào Edit ở Form 1 thì sang Form 2.
làm thế nào để From <tên nước> To <tên nước> ở Form 1 hiển thị sẵn trên Form 2 ạ
Xin add duyệt bài giup em ạ:))
Khi nhấn click vào Edit ở Form 1 thì sang Form 2.
làm thế nào để From <tên nước> To <tên nước> ở Form 1 hiển thị sẵn trên Form 2 ạ
Form? có bao nhiêu loại form
C# ạ. Mình mới học lt winform ạ:v
Tìm hiểu delegate, event.
Hoặc truyền form 1 vào form2.
String tenNuoc = "tenNuoc"; //tên nước chọn ở form 1
Form2 f2 = new Form2();
f2.a.Text= tenNuoc; //a là textbox, lable,... tùy
f2.show();
lâu rồi không đụng vô C# nên k chuyên lắm, hi vọng giúp dc bạn
Cách 1:
Trong Form2 khai báo Form1:
public Form1 frm1 = null;
Trong Form1 khi gọi Form2:
Form2 frm2 = new Form2();
frm2.frm1 = this; // gán frm2 của Form2 là form1, this là chính form1
frm2.showDialog();
Bây giờ gán text từ Form2 về Form1 (xử lý trong Form2):
frm2.myLabel.Text="Text"; // gán text cho label có tên myLabel ở trong Form1.
// mặc định label khi kéo vào form thì Modifiers nó là private nên chỉnh lại cho nó là public. (xem bên mục properties của label).
=> Đây là cách chạy được nhưng không đề nghị vì vi phạm tính đóng gói của OOP.
Cách 2 : Delegate (chuẩn)
Khai báo 1 kiểu delegate để truyền dữ liệu qua, ở đây truyền text.
public delegate void PassStringEventHandler(object sender, string text);
// delegate này khai báo ở trong namespace nào cũng được tuy nhiên thì nhớ vị trí để sau còn gọi.
// đơn giản thì khai báo trước Form2
// delegate này để truyền 2 thông số qua bao gồm sender là người gửi dữ liệu
// text chính là dữ liệu sẽ chuyển qua.
// tên loại delegate gồm 2 phần : chức năng (PassString) và hậu tố (EventHandler).
Trong Form2 khai báo 1 delegate.
public PassStringEventHandler PassString = null;
Trong Form1 sẽ có 1 hàm để xử lý string từ Form2 trả về. Nó sẽ có kiểu tham số giống hệt delegate.
private void ProcessString(object sender, string text){
myLabel.Text = text; // gán text
}
Bên trong Form2 sẽ gửi text như sau:
if(PassString != null ){ // kiểm tra null trước, nếu chưa gán sẽ bằng null, chạy sẽ lỗi
PassString(this, "Text"); // truyền chính nó và text qua delegate
}
Việc còn lại là kết nối delegate của Form2 và hàm thực thi của Form1 tại lúc show Form2:
Form2 frm2 = new Form2();
frm2.PassString = ProcessString; // gán delegate, chú ý ProcessString không có ()
frm2.showDialog()
2 bài trên hơi lạc đề vì hướng dẫn truyền ngược từ Form2 về Form1.
Nhưng để đó để tham khảo