FORM

1.     Thêm, xóa một Form trong project

Trong phn này sng dn các bn cách đ thêm mi mt Form hoc thêm mt Form đã có sn vào project. Cùng vi đó là cách xóa mt Form khi project như thế nào.

Thêm một Form vào project

Thêm mi mt Form vào project: Vi mi project chúng ta s cn nhiu Form đ th hin giao din ca ngưi dùng . Vic thêm mi mt Form mi vào project đưc thc hin như sau:

c 1: Vào menu Project Add Windows Form hoc vào menu Project Add New Item

winforms bai2 10 png

Hình 2.15. Thêm mới một Form vào Project

c 2: Thiết lp trên ca s Add New Item như sau:

winforms bai2 11 1  png

Hình 2.16. Chọn kiểu Form

Thêm mt Form có sn vào project: Ta cũng có th thêm mt Form đã có sn bng cách:

c 1: Vào menu Project Add Existing Item.

c 2: Theo đưng dn, chn Form cn add

c 3: Nhn nút Add

Xóa một Form khỏi project

Đ xóa mt Form đang có trong d án:

c 1: Nhn chut phvào Form cn g b ( ca s Solution Explorer).

c 2: ChDelete trong menu hin ra

2.     Một số thuộc tính của Form

Form là control cha (cha các control khác khi to giao din cho ng dng). Các bn cùng tìm hiu mt s thuc tính ca Form bng dưi đây

Bảng 2.1. Một số thuộc tính của Form

Thuộc tính

Diễn giải

Text

Tiêu đề (titlebar) của Form

WindowState

Trạng thái thể hiện của Form (normal, minimized,maximized)

StartPosition

Vị trí Form hiển thị khi chương trình gọi đến Form

TopMost

Form có chọn hiện ưu tiên trong các action Form hay không

Locked

Khóa vị trí các controls trong quá trình thiết kế

Icon

Chọn biể tượng cho Form

ControlBox

Mang giá trị True hoặc False. Nếu thiết lập thuộc tính là False thì sẽ loại bỏ các nút minimize và nút maximize trên Form

MinimizeBox

Có hiện nút thu nhỏ của Form

MaximizeBox

Có hiện nút phóng to của Form

BackColor

Lựa chọn màu nên cho Form

BackGroundImage

Xác định file hình làm hình nền cho Form

FormBoderStype

Lựa chọn kiểu đường viền cho Form

ForeColor

Chọn màu chữ cho Form

Font

Lựa chọn font chữ, font size, font style cho Form

Cusor

Thiết lập hình dạng con trỏ khi di chuyển con trỏ vào Form

IsMDIContainer

Mang giá trị True hoặc False; True: Form ở dạng MDI Form (Form cha), False: Form ở dạng bình thường

BackgroundImageLayout

Thiết lập việc hiển thị hình vừa thêm trong thuộc tính BackGroundImage sẽ hiển thị trên Form ở dạng: bình thường (None), giữa (Center),...

AcceptButton

Giá trị thuộc tính này nhận là tên của một Button trên Form. Khi đó thay vì nhấp chuột vào Button để thực thi thì người dùng có thể nhấn phím Enter trên bàn phím

CancleButton

Giá trị thuộc tính này nhận là tên của một Button trên Form. Khi đó thay vì nhấp chuột vào Button để thực thi thì người dùng có thể nhấn nút Escape trên bàn phím

Keypreview

Cho phép Form nhận các giá trị từ bàn phím, mặc định là False (không nhận)

3.     Một số sự kiện thông dụng của Form

Trong phn này s lit kê mt s s kin thông dng ca Form, đây là các s kin rt quan trng vì vy các bn nên hc và ghi nh nó tht k.

Các s kin trong Form đưc lit kê trong bng dưi đây:

Bảng 2.2. Một số sự kiện của Form

Tên sự kiện

Diễn giải

FormLoad

Xảy ra khi Form bắt đầu chạy, ta thường dùng sự kiện Load để khởi tạo các giá trị ban đầu

FormClosing

Xảy ra trước khi đóng Form, ta thường dùng sự kiện này để giải phóng tài nguyên hệ thống

KeyDown

Xảy ra khi một phím được nhấn trên Form. muốn cho sự kiện này xảy ra ta phải đặt thuộc tính KeyPreview có giá trị là True, để lấy mã của phím được nhấn (keyCode)

MouseClick

Xảy ra khi nhấn một trong ba nút của chuột: chuột trái, chuột phải và chuột giữa

BackColorChanged

Giá trị thuộc tính BackColor thay đổi

ForeColorChanged

Giá trị thuộc tính ForeColor bị thay đổi

Click

Nhấp chuột vào vùng làm việc của Form

DoubleClick

Nhấp đúp chuột vào vùng làm việc của Form

FormClosed

Form đã được đóng hoàn toàn

KeyDown

Phím được nhấn xuống

KeyUp

Phím được thả ra

KeyPress

Phím được nhấn xuống và thả ra

MouseEnter

Chuột nằm trong vùng thấy được của Form

MouseHover

Chuột nằm trong vùng hiển thị một khoảng thời gian

MouseDown

Nhấn chuột trên vùng hiển thị của Form

MouseLeave

Chuột ra khỏi vùng thấy được của Form

MouseMove

Chuột được di chuyển trên Form

Move

Form được di chuyển

Resize

Form bị thay đổi kích thước

TextChanged

Giá trị của thuộc tính Text bị thay đổi

4.     Một số phương thức thường dùng trong Form

Trong phn này s gii thiu các bn mt s phương thc thưng đưc dùng trong Form, hu hết trong các ng dng đu s dng các phương thc này.

·       Show(): S dng đ hin th Form.

·       ShowDialog(): Tương t như Show() nhưng Form hin th bng phương thc ShowDialog() s bt buc ngưi dùng phi thao tác cho ti khi đóng Form (khi chưa đóng Form thì không đưc thao tác vi Form khác).

·       Hide(): n Form, tương t như vic thiết lp thuc tính Visible = False.

·       Close(): Đóng Form.

5.     Phân loại Form

Trong phn này s phân loi các Form thưng gp cũng như cách gi hin th Form, đóng Form và dng chương trình.

Phân loại Form

Trong Form s đưc phân làm 3 loi Form:

·       Form bình thưng (Normal Form): Mt Form bình thưng khi đưc gi hin th bên trong mt Form cha và đưc ch đnh Form cha cha nó là Form nào thông qua thuc tính MdiParent khi đó s tr thành Form con.

·       Form cha (MdiParent Form): Là Form có th cha các Form khác bên trong nó, đ mt Form tr thành Form cha ta cn thiết lp thuc tính isMdiContainer ca Form có giá tr là True.

·       Form con (MdiChildren Form)

Gọi hiển thị Form

Gi hin th Form2 t Form1 dng: Form2 là Normal Form.

1

2

Form frm = new Form2();

frm.Show();

Gi hin th Form2 thì Form1 dng: Form2 là Form con.

1

2

3

Form frm = new Form2();

frm.MdiParent = this;

rfm.Show();

Đóng Form, dừng chương trình

Đ đóng Form hoc dng chương trình ta s dng 2 dòng lnh sau:

·       This.Close(): Đóng Form hin hành

·       Application.Exit(): Đóng chương trình

6.     Ví dụ sử dụng các sự kiện thông dụng trong Form

Trong phn này s to mt ng dng đơn gin s dng mt s control thông dng trong Form, c th s to mt Form vi các s kin sau:

·       S lý s kin  FormLoad xut hin hp thoi hi ngưi dùng có mun m ng dng hay không.

·       Nhn nút "Hin th" thì hin th mt hp thoi vi nôi dung đưc nhp ô TextBox.

·       Nhn t hp phím ALT + H s xut dòng ch "Hello Freetuts.net" trong ô TextBox.

·       Click chut phi s hin th hp thoi thông báo ngưi dùng va nhp chut phi, tương t như vy cho chut trái và chut gia.

·       Nhn nút "Thoát" s xut hin hp thoi hi ngưi dùng có mun thoát hay không.

Vic đu tiên chúng tn to giao din vi các điu khin cn thiết, sau đó s x lý tng s kin theo như yêu cu ca đ bài.

c 1: To giao din cho ng dng

winforms bai2 01 png

Hình 2.17. Tạo giao diên cho Form

Ta s to mLabel đ hin th dòng ch "H và tên", mt ô TextBox đ ngưi dùng nhp d liu cũng như đ hin th d liu và hai Button đ x lý hai s kin là hin th và thoát. bài trưc đã có hưng dn đi ni dung Text và đt tên cho điu khin, các bn có th xem li nhé.

c 2: X lý các s kin

Trong phn này ta s s lý ln lưt các s kin mà đ bài đã yêu cu, đu tiên ta s s lý s kiFormLoad. Trưc khi Form bt đu chy, h thng s hin th mt hp thoi vi ni dung hi xem ngưi dùng có mun m ng dng hay không, nếu chn "OK" thì m ng dng, ngưc li chn "Cancel" thì không m.

Ta s s dng hp thoi MessageBox.Show() vi thuc tính OK/Cancel đ hin th thông báo cho ngưi dùng.

1

2

3

4

5

private void Form1_Load(object sender, EventArgs e)

        {

            if (MessageBox.Show("Bạn có muốn mở chương trình", "Hỏi người dùng", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)

                Dispose();

        }

Kết qu:

winforms bai2 04 PNG

Hình 2.18. Thông báo

Tiếp theo s là s kin nhp vào nút Button "Hin th" thì ni dung đưc nhp ô TextBox s đưc hin ra trên hp thoi, các bn Double Click vào nút Button "Hin th" đ viết s kin cho nó. Chúng ta cũng s s dng MessageBox.Show() đ to hp thoi.

1

2

3

4

private void btn_hienthi_Click(object sender, EventArgs e)

        {

            MessageBox.Show("Tên của bạn là: " + txt_hoten.Text);

        }

Kết qu:

winforms bai2 06 PNG

Hình 2.19. Kết quả thực hiện chương trình

S kin tiếp theo khi các bn nhn t hp phím ALT + H thì ni dung "Hello Freetuts.net" s đưc hin th lên ô TextBox. Chúng ta s viết trên s kiKeyDown (phím đưc nhn xung) bng cách chut phi vào Form chn Properties ri Double click vào s kin Keydown.

winforms bai2 02 png

Hình 2.20. Mở sự kiện Keydown của Form

*Lưu ý: Các bn phi thay đi giá tr thuc tính KeyPreview vi giá tr True đ nhn các giá tr t bàn phím, vì mc đnh nó s bng False.

winforms bai2 03 png

Hình 2.21. Đặt thuộc tính KeyPreview cho Form

Các bn x lý s kin theo đon code sau:

1

2

3

4

5

6

7

8

9

private void Form1_KeyDown(object sender, KeyEventArgs e)

        {

            if(e.Modifiers == Keys.Alt && e.KeyCode == Keys.H)

                //Lưu ý: bật KeyPreview == true trước khi chạy Form

            {

               // gán nội dung "Hello Freetuts.net" vào ô TextBox

                txt_hoten.Text = "Hello Freetuts.net !!!";

            }

        }

Kết qu:

winforms bai2 07 PNG

Hình 2.22. Kết quả khi bấm phím trên Form

S kin tiếp theo là khi các bn nhp chut h thng s hin th hp thoi thông báo các bn va nhp chut, ví d khi các bn nhp chut phi thì h thng s hin th hp thoi thông báo bn va nhp chut phi.

Các bn s x lý trên s kiMouseClick, Tương t như KeyDown các bn s vào Properties ca Form ri Double click vào s kiMouseClick đ viết s kin.

private void Form1_MouseClick(object sender, MouseEventArgs e)

        {

            if(e.Button == MouseButtons.Left)

            {

                MessageBox.Show("Bạn vừa click chuột trái");

            }

            if (e.Button == MouseButtons.Right)

            {

                MessageBox.Show("Bạn vừa click chuột phải");

            }

            if(e.Button == MouseButtons.Middle)

            {

                MessageBox.Show("Bạn vừa click chuột giữa");

            }

        }

Kết qu:

winforms bai2 08 PNG

Hình 2.23. Kết quả xử lý sự kiện mouse click

Và cui cùng là s kin khi các bn nhn vào nút Button "Thoát" thì h thng s hin th hp thoi hi các bn có mun thoát hay không, nếu chn "Yes" thì thoát ng dng, nếu chn "No" thì thoát khi hp thoi và quay li ng dng.

Chúng ta dùng phương thúc Application.Exit() đ thoát khi chương trình, đây là mt phương thc rt thông dng và đưc s dng rt nhiu.

private void btn_thoat_Click(object sender, EventArgs e)

        {

            DialogResult dg = MessageBox.Show("Bạn có muốn đóng chương trình", "Hỏi người dùng", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (dg == DialogResult.Yes)

            {

                Application.Exit();

            }   

        }

Kết qu:

winforms bai2 09 PNG

Hình 2.24. Kết quả xử lý sự kiện của nút Thoát

7.     Bài tập

Tìm hiu thêm các thuc tính, s kin khác v Form, thc hành và nh tht k các thuc tính và s kin này, vì nó đưc s dng rt nhiu.