Hướng dẫn cách mở form này và tắt form kia

Mẹo: Tính năng "Chuyển tới phần dựa trên câu trả lời" chỉ áp dụng cho loại câu hỏi Trắc nghiệm và Chọn từ danh sách thả xuống.

Bỏ qua các phần trong biểu mẫu

  1. Mở biểu mẫu trong Google Biểu mẫu.
  2. Để thêm dấu ngắt phần, hãy nhấp vào biểu tượng Thêm phần .
  3. Ở phía dưới cùng của mỗi mục, bạn có thể chọn mục tiếp theo mà mọi người sẽ chuyển đến.

Tạo, chỉnh sửa và định dạng

  • 1/7 Cách sử dụng Google Biểu mẫu
  • 2/7 Tạo và chấm điểm các bài kiểm tra bằng Google Biểu mẫu
  • 3/7 Chỉnh sửa biểu mẫu
  • 4/7 Chọn một câu hỏi cho biểu mẫu của bạn
  • 5/7 Thay đổi giao diện hoặc phông chữ của biểu mẫu
  • 6/7
  • 7/7 Chia sẻ biểu mẫu với các cộng tác viên

Visit the Learning Center

Using Google products, like Google Docs, at work or school? Try powerful tips, tutorials, and templates. Learn to work on Office files without installing Office, create dynamic project plans and team calendars, auto-organize your inbox, and more.

Với ứng dụng WinForms, trong một số trường hợp chúng ta cần phải trao đổi dữ liệu từ form này sang form khác. Đây là vấn đề mà các coder thường gặp phải và cũng gặp nhiều lúng túng. Trong bài viết này tôi sẽ giới thiệu 4 phương pháp cơ bản và rất đơn giản. Với 4 phương pháp này hoàn toàn dựa trên những khái niệm chính trong ngôn ngữ C#:

II) Tổng quan bốn phương pháp cơ bản để passing data giữa các form:

  1. Sử dụng constructor
  2. Sử dụng objects
  3. Sử dụng properties
  4. Sử dụng delegates

Trong 4 phương pháp trên, sử dụng delegates được đánh giá cao nhất vì nó không phụ thuộc vào quá trình khởi tạo đối tượng, sự tồn tại của đối tượng. Nó chỉ đơn giản sử dụng các events do coder bẫy sẵn.

IV) Sau đây là chi tiết thực hiện từng phương pháp:

Để thực hiện các phương pháp trên:

Bước 1

: Tạo một project có 2 forms (HVBK-1(Form1) và HVBK-2(Form2))

Hướng dẫn cách mở form này và tắt form kia

Bước 2

: Với Form 1: Thêm 1 textbox và một button, sử dụng để gửi dữ liệu

Bước 3

: Với Form 2: Thêm 1 Label để hiển thị dữ liệu nhận được từ Form1

Phương Pháp Constructor: Đây là phương pháp đơn giản nhất trong 4 phương pháp. Phương pháp này sử dụng hàm dựng. Hàm dựng là hàm có đặc thù là nó được gọi đầu tiên khi ta tiến hành khởi tạo đối tượng và chỉ gọi một lần(Từ khi khởi tạo đến khi hủy đối tượng). Với phương pháp này ta chỉ cần thêm một tham biến vào hàm dựng của form2. Code thêm tham biến vào hàm dựng của Form2

public Form2(stringstrTextBox)

{

InitializeComponent();

label1.Text=strTextBox;

//Gán dữ liệu nhận được vào Label để thể hiện

}

Tại button "Gửi dữ liệu sang form 2" ta tiến hành khởi tạo Form2 và Form2 sẽ hiện ra mỗi khi ta click vào nút này.

private voidbutton1_Click(object sender, System.EventArgs e)

{

Form2 frm = new Form2(textBox1.Text);

frm.Show();

}

Kết quả: Chạy chương trình và ta có được kết quả như hình ảnh trên.

Phương Pháp Object Object là kiểu reference và được tạo trên heap và sử dụng từ khóa new. Phương pháp này cũng rất đơn giản

Bước 1: Tại Form1 ta tiến hành thay đổi access modifier cho textbox itừ private thành public.

public class Form1 : System.Windows.Forms.Form {

public System.Windows.Forms.TextBoxtextBox1;

// ..............................

Tại Form2 ta tiến hành khai báo một biến frm1 có kiểu Form1

public class Form2 : System.Windows.Forms.Form1 {

private System.Windows.Forms.Labellabel1;

public Form1 frm1;

// ..............................

Bước 2: Tại Form1 ta tiến hành code hàm sự kiện Clicked của nút button "Gửi dữ liệu sang form 2"

private voidbtnSend_Click(object sender, System.EventArgs e)

{

Form2 frm =new Form2();

frm.frm1 = this; //Gán form1 cho biến frm1 có kiểu Form1 của Form2

frm.Show(); //Hiện Form2

}

Bước 3: Trong hàm Load của Form2 ta tiến hành gán giá trị của ô textbox1 của form1 cho Label của form2

private voidForm2_Load(object sender, System.EventArgs e)

{

label1.Text = ((Form1)frm1).textBox1.Text;

}

Kết quả: Chạy chương trình và ta có được kết quả như hình ảnh trên.

  1. Sử dụng Properties: - Properties cho phép clients truy cập trực tiếp đến các thành viên của class. Form cũng là một class, trong phương pháp này ta add thêm thuộc tính (Properties) cho mỗi form.: - Ở Form1 ta add thêm một thuộc tính, để nhận lại giá trị từ ô textbox

public string_textBox1 { get { returntextBox1.Text; } }

- Ở Form2 ta add thêm một thuộc tính, để gán giá trị cho Label

public string_textBox { set { label1.Text = value; } }

- Ở Form1, trong sự kiện button click ta tiến hành khởi tạo và hiển thị Form2. Giá trị của ô textbox trong Form1 sẽ được chuyền sang cho Form2 thông qua thuộc tính, và gán vào Label của Form2.

private voidbutton1_Click(object sender, System.EventArgs e)

{

Form2 frm = new Form2();

frm._textBox = _textBox1; //gán giá trị của thuộc tính _textbox1 của Form1 cho thuộc tính _textbox của Form2

frm.Show(); // Hiển thị Form2

}

Kết quả được hiển thị như hình ảnh trong phần đầu đã giới thiệu.

  1. Sử dụng Delegates - Delegates là một kiểu tham chiếu (reference type), được sử dụng như là một phương thức đặc biệt(Con trỏ hàm), chúng ta có thể đăng ký bất kỳ phương thức nào với delegates. Và đây là một kỹ thuật rất được sử dụng trong lập trình sự kiện.

Bước 1: Ở Form1 ta tiến hành add một delegates như sau

public delegate void delPassData(TextBoxtext);

Bước 2: Trong Form2 ta tiến hành tạo một phương thức để delegate sẽ trỏ tới. Trong phương thức này ta tiến hành gán giá trị của ô textbox trong Form1 vào Label của Form2:

public void funData(TextBox txtForm1) { label1.Text = txtForm1.Text; }

Bước 3: Trong sự kiện button click của form1 ta tiến hành khởi tạo Form2 và delegate. Chỉ ra một phương thức của Form2 và tiến hành gọi delegate như sau:

private voidbtnSend_Click(object sender, System.EventArgs e)

{

Form2 frm = new Form2();

delPassData del = new delPassData(frm.funData);

del(this.textBox1);

frm.Show();

}

Kết quả được thể hiện như hình ảnh ở phần đầu tiên.

Trong 4 phương pháp này, phương pháp sử dụng hàm dựng (Constructor) được đánh giá là kém nhất, vì đối tượng chỉ được khởi tạo một lần, nếu đối tượng ko được hủy(form2 không hủy hoặc tắt đi) mà ta lại muốn thay đổi dữ liệu chuyền từ form1 sang form2 thì phương pháp này ko thực hiện được. Delegate là phương pháp khắc phục rất tốt nhược điểm này.