Truyền Dữ Liệu Giữa 2 FormHôm nay ñể luyện dịch salomit xin dịch bài "Passing Data Between Forms" của tác giả Thiagarajan Alagarsamy Bài viết này cung cấp một số phương pháp giúp truyề
Trang 1Truyền Dữ Liệu Giữa 2 Form
Hôm nay ñể luyện dịch salomit xin dịch bài "Passing Data Between Forms" của tác giả Thiagarajan
Alagarsamy
Bài viết này cung cấp một số phương pháp giúp truyền dữ liệu giữa 2 form trong lập trình ứng dụng windown form
Giới Thiệu
Một số bạn ñã gặp vấn ñề "Làm thế nào ñể truyền dữ liệu từ một form này ñến một form khác trong ứng dụng windown form ".Chân thành mà nói tôi cũng gặp vấn ñề như thế trước ñó
Có rất nhiều cách(bao nhiêu cách thì tôi không biết) ñể truyền dữ liệu giữa các form trong ứng dụng winform form Trong bài viết này tôi xin ñưa ra 4 cách quan trọng và cũng dễ dàng ñể giải quyết vấn ñề của bạn và cũng của tôi
1.Dùng constructor
2.Dùng objects
3.Dùng propertes
4.Dùng delegates
ðể có thể minh họa các cách trên thì chúng ta cần có 2 form và một số control cần thiết.Let's go
Bước 1:
Tạo một project mới và chọn ứng dụng là winform form
Bước 2:
Thêm textbox1 và button1 vào Form vừa tạo ("ðặt tên là form1")
Bước 3:
Tạo một Form nhận dữ liệu ñược gởi từ form1 và ñặt tên là form2 bằng cách click chuột phải vào và chọn add
Trang 2Thêm một cái lable1 control ñể hiển thị dữ liệu truyền từ form1
a.Dùng Constructor
ðây là một phương pháp có thể nói là dễ nhất trong các phương pháp ñề ra ở trên.Phương thức sẻ ñược gọi bất
kì khi nào bạn tạo ra ñối tượng.Phương pháp này gọi là Constructor.Xây dụng một hàm tạo từ form2 với tham
số thuộc kiểu string.Trong hàm tạo chúng ta gắn thuộc tính text của lable là tham số truyền vào Khởi tạo ñối tượng form2 bằng sự kiện kích của button1 trong form 1 sau ñó lấy dữ liệu ở textbox1 của form1 làm ñối số truyền vào hàm tạo form2
Cụ thể như sau
Xây dựng hàm tạo từ form2
public Form2(string strTextBox)
{
InitializeComponent();
label1.Text=strTextBox;
}
Tiếp tục ở sự kiện button1_click
private void button1_Click(object sender, System.EventArgs e)
{
Form2 frm=new Form2(textBox1.Text);
frm.Show();
Trang 3}
b.Dùng Object
Object là kiểu tham chiếu và ñược tạo ra trên vùng nhớ heap bằng cách dùng từ khóa new.Và bây giờ chúng ta
sẻ dùng chúng ñể truyền dữ liệu giữa 2 form Phương pháp này cũng ñơn giản ,trong form2 ta tạo một ñối tượng
là form1,sau ñó tạo ñối tượng form2 trong sự kiện click của button1 trong form1 ,bây giờ ñối tượng form1 sẻ là thành viên của form2
Cụ thể
Bước 1: Thay ñổi quyền truy xuất của Form1 thành pulic
public class Form1 : System.Windows.Forms.Form
{
public System.Windows.Forms.TextBox textBox1;
}
Bước 2:Tại sự kiện kích của button trên Form1 ta có sử lí sau
private void btnSend_Click(object sender, System.EventArgs e)
{
Form2 frm= new Form2();
frm.frm1=this;
frm.Show();
}
Bước 3:
Trong Form2 tạo ñối tượng form1
Trang 4private System.Windows.Forms.Label label1;
public Form1 frm1;
}
Bước 4:
Tạo phương thức Load của form2 ta thức hiện ép kiểu về Form1 và truy xuất dữ liệu của thành viên textbox1 của form1
private void Form2_Load(object sender, System.EventArgs e)
{
label1.Text=((Form1)frm1).textBox1.Text;
}
c.Dùng Thuộc tính
Trong phương pháp này chúng ta thực hiện add một thuộc tính cho mỗi Form ,Trong form1 chúng ta dùng một thuộc tính ñể nhận giá trị của textbox1,còn trong form2 một thuộc tính cài ñặt cho thuộc tính label'text.Sau ñó trong sự kiện button của form1 ta tạo ñối tượng form2 rồi gán thuộc tính ò form1 cho thuộc tính form2
Bước 1:
Gán thuộc tính cho form1 ñể nhận giá trị của textbox1
Trang 5public string _textBox1
{
get{return textBox1.Text;}
}
Bước 2:
Tạo một thuộc tính cho form 2
public string _textBox
{
set{label1.Text=value;}
}
Bước 3:
Xử lí trong sự kiện button1_click
private void button1_Click(object sender, System.EventArgs e)
{
Form2 frm=new Form2();
frm._textBox=_textBox1;
frm.Show();
}
d.Dùng Delegates
Tôi không nhắc lại chức năng của delegate,trong ví dụ này tôi xin dùng chúng ñể tạo
ra cách truyền dữ liệu giữa 2 form
Bước 1:
Tại form 1 tạo một delegate
Trang 6Tại sự kiện button1_click ta xử lí ñoạn code sau:
private void btnSend_Click(object sender, System.EventArgs e)
{
Form2 frm= new Form2();
delPassData del=new delPassData(frm.funData);//
del(this.textBox1);
frm.Show();
}
Bước 3:
Tại form2 tạo ra một hàm mà delegates ñã trỏ ñến với chức năng là là gán dữ liệu cho label1
public void funData(TextBox txtForm1)
{
label1.Text = txtForm1.Text;
}
Kết luận
4 cách trên rất ñơn giản và dễ thực hiện.Hi vọng là bài viết trên giúp ích mọi người
Thank
Salomit