Truyền giá trị giữa các form trong C# rất quan trọng khi làm ví dụ với các hộp thoại . Có nhiều cách để thực hiện thao tác này như sử dụng delegate, properties hay constructor. Tuy nhiên, bản thân mình thấy phương pháp sử dụng thuộc tính DialogResult khi open một form nào đó là một phương pháp thân thiện và dễ hiểu nhất. Bạn download SourceCode tại đây để có thể tìm hiểu kỹ hơn nhé.
Sau đây là một ví dụ đơn giản để bạn tìm hiểu phương pháp này:
I. Tạo 2 form MainForm và DialogForm.
1. MainForm: có 1 TextBox (id: textValue) và 1 button (id: btnEdit)
2. DialogForm: có 1 TextBox (id: txtValue) và 2 button OK, Cancel
Đối với button OK, bạn set thuộc tính DialogResult là OK và tương tự, button Cancel có thuộc tính DialogResult là Cancel
Ngoài ra, tại form này tạo thêm 1 biến textValue để lưu giữ giá trị truyền giữa 2 form
public string textValue = "";
II. Viết code để truyền giá trị từ MainForm tới DialogForm và ngược lại:
– Tại MainForm, bạn viết code xử lý sự kiện click vào button btnEdit để truyền giá trị “Value1” trong textbox txtValue sang DialogForm
public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void txtEdit_Click(object sender, EventArgs e) { DialogForm frm = new DialogForm(); //Gán giá trị cho biến textValue trong DialogForm frm.textValue = txtValue.Text; //Nếu sau khi bạn ấn nút OK trên DialogForm if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { //Gán giá trị textValue trong DialogForm cho textbox txtValue trong MainForm txtValue.Text = frm.textValue; } } }
– Tại DialogForm, viết code để gán giá trị “Value1” nhận được vào TextBox txtValue khi load DialogForm
private void DialogForm_Load(object sender, EventArgs e) { //Khi load form, Gán giá trị textValue được truyển từ MainForm cho textbox txtValue txtValue.Text = textValue; }
– Sau khi bạn gõ giá trị mới, giả sử là “Value2” vào textbox, bạn viết code xử lý sự kiện ấn button OK để gán giá trị của textbox txtValue cho biến textValue để truyền giá trị mới trở lại form MainForm. Code đầy đủ của form như sau:
public partial class DialogForm : Form { public string textValue = ""; public DialogForm() { InitializeComponent(); } private void DialogForm_Load(object sender, EventArgs e) { //Khi load form, Gán giá trị textValue được truyển từ MainForm cho textbox txtValue txtValue.Text = textValue; } private void btnOK_Click(object sender, EventArgs e) { //Gán giá trị cho textValue từ textbox txtValue textValue = txtValue.Text; } }
– Kết quả là textbox trong MainForm sẽ nhận giá trị mới là Value2
Truyền giá trị giữa các form trong C# Thật đơn giản phải không nào? Bạn download SourceCode tại đây để có thể tìm hiểu kỹ hơn nhé. Chúc các bạn học lập trình vui vẻ và thành công.