Giới thiệu các điều khiển nội tại cơ bản

Một phần của tài liệu Bài giảng lập trình hướng sự kiện it09 Đại học mở hà nội (Trang 35 - 58)

TÀI LIỆU THAM KHẢO

BÀI 4: WINDOWS FORM – CÁC ĐIỀU KHIỂN NỘI TẠI

4.2. Giới thiệu các điều khiển nội tại cơ bản

4.2.1. Những điểm căn bản của Windows Forms.

Trong các bài học và thí dụ trước đây ta đã nói qua, bây giờ ta tóm tắc những điểm căn bản của Windows Forms:

 Một Windows Form thật sự là một class. Trong .NET không có từ đặc biệt như "form module" để dùng cho nó.

 Tất cả mọi form đều thừa kế từ class System.Windows.Forms.Form.

 Tất cả các đối tượng kiểu form đều phải được khai báo và khởi tạo tường minh nếu ta muốn sử dụng (load).

 Giống như tất cả các classes trong .NET Framework, Windows Forms có các hàm tạo (constructors) và hủy bỏ (destructors).

 Các sự kiện (events) được xử lý bằng nhiều cách và rất linh động. Một sự kiện có thể được xử lý bởi nhiều điều khiển (control) cùng một lúc và mỗi điều khiển có một cách xử lý khác nhau. Ngược lại, nhiều sự kiện khác nhau

có thể được xử lý bằng một Event Handler duy nhất.

Điểu khiển (control): là các đối tượng nằm trong Form. Mỗi điều khiển có một tập các thuộc tính (property), phương thức (method), sự kiện (event) cho những mục đích riêng.

4.2.2. Làm việc với các điều khiển nội tại thường dùng.

4.2.2.1. Form

Form là đối tượng cửa sổ không thể thiếu trong môi trường Windows. Form được dùng để chứa các đối tượng khác như nút lệnh (Button), hộp nhập văn bản (TextBox),…

Phân loại:

 Single Document Interface (SDI):

o Chỉ hỗ trợ một document hoặc một cửa sổ tại một thời điểm.

o Dạng ứng dụng như NotePad, MS Paint với các đặc tính xử lý ảnh và văn bản giới hạn.

o Để làm việc với nhiều tài liệu thì phải mở các instance khác của ứng dụng.

o Việc quản lý ứng dụng SDI khá đơn giản.

 Multiple Document Interface (MDI)

o Ứng dụng cho phép xử lý nhiều document tại một thời điểm.

o Các ứng dụng hiện tại thường là dạng MDI: MS Office, MS Studio.NET, Adobe Photoshop, …

o Ứng dụng MDI thường phức tạp và chức năng xử lý đa dạng:

 Xử lý cùng một dạng document: MS Word, Adobe Photoshop.

 Xử lý nhiều dạng document :Visual Studio 6: code, design, image…

a) Thuộc tính (Properties).

Name: Tên của Form. Trong một Project tên của các Form phải khác nhau.

AcceptButton: Giá trị mà thuộc tính này nhận là tên của một Button trên

Form (Nếu Form có chứa button). Khi đó nếu bạn nhấn phím Enter thì sự

kiện Click của Button mà bạn chọn được thực thi mà không cần nhấn chuột vào Button đó.

Autosize: Nhận một trong hai giá trị True hay False

- True: Không cho phép thay đổi kích thước Form mà che đi các điều khiển khác chứa trên Form.

- False: Ngược lại

AutoSizeMode: Cho phép thay đổi kích thước của Form hay không? (Khi di

chuyển chuột vào các mép của Form mà hiện nên biểu tượng ↔ là cho phép). Và nhận một trong hai giá trị:

- GrowOnly: Cho phép

- GrowAndShrink: Không cho phép

BackColor: Chọn màu nền cho Form

BackGroundImage: Chọn ảnh làm nền cho Form

CancelButton: Giá trị mà thuộc tính này nhận là tên của một Button trên

Form (Nếu Form có chứa button). Khi đó nếu bạn nhấn phím ESC thì sự kiện Click của Button mà bạn chọn được thực thi mà không cần nhấn chuột vào Button đó (tương tự như thuộc tính AcceptButton ).

ControlBox: Nhận một trong hai giá trị True hay False

- True: Cho phép các các nút: MaximizeBox,

MinimizeBox, Close trên Titlebar xuất hiện.

- False: Không Cho phép các các nút: MaximizeBox, MinimizeBox, Close trên Titlebar xuất hiện (Khi đó các thuộc tính MaximizeBox, MinimizeBox của Form cũng mất đi).

Font: Chọn kiểu Font chữ cho Form (Khi đó tất cả các điều khiển

được thêm vào Form sẽ có thuộc tính Font giống như thuộc tính Font của Form).

ForeColor: Tương tự như thuộc tính Font nhưng áp dụng đối với màu

chữ.

FormBorderStyle: Chọn Style cho Form (Có 7 lựa chọn khác nhau).

KeyPreview: Nhận một trong hai giá trị True hay False

- True: Cho phép các sự kiện về bàn phím của Form (KeyUp, KeyDown, KeyPress… của Form) có hiệu lực.

- False: Ngược lại.

Opacity: Độ trong suốt của Form

b) Sự kiện (Events).

AutoSizeChanged: Xảy ra khi thuộc tính Autosize của Form chuyển từ True

→ False hay ngược lại là False → True.

Click: Xảy ra khi người dùng Click chuột vào vùng làm việc thuộc

Form.

ControlAdded: Xảy ra khi một điều khiển được Add vào Form.

ControlRemoved: Xảy ra khi một điều khiển bị xóa khỏi Form.

FormClosed: Xảy ra khi Form đã đóng (Nhấn vào nút X màu đỏ trên

Titlebar).

FormClosing: Xảy ra khi Form đang đóng (2 sự kiện FormClosed và

FormClosing thường dùng trong lập trình CSDL: khi xảy ra sự kiện này thì đóng kết nối CSDL).

KeyDown, KeyPress, KeyUp: Bấm, nhả phím.

Một số ví dụ minh họa

Sự kiện FormClosed

//Sự kiện FormClosed - Sự kiện này được gọi khi Form đã đóng

private void frmForm_FormClosed(object sender, FormClosedEventArgs e)

{

MessageBox.Show("Sự kiện FormClosed được gọi",

"FormClosed",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

Sự kiện FormClosing

//Sự kiện FormClosing xảy ra khi Form đang đóng (chưa hoàn toàn đóng)

private void frmForm_FormClosing(object sender, FormClosingEventArgs e)

{

if (MessageBox.Show("Bạn có muốn đóng Form lại hay không?",

"FormClosing",

MessageBoxButtons.YesNo, MessageBoxIcon.Information) ==

DialogResult.Yes)

e.Cancel = false;// Đóng Form lại else

e.Cancel = true;//Không đóng Form nữa }

Sự kiện MouseClick

private void frmForm_MouseClick(object sender, MouseEventArgs e)

{ //Nếu bạn không muốn biết người dùng nhấn chuột TRÁI hay PHẢI hay GIỮA thì

khi nhấn bất kì nút chuột nào cũng xảy ra sự kiện MouseClick của Form.

if (e.Button == MouseButtons.Left)

MessageBox.Show("Sự kiện MouseClick xảy ra khi bạn Click chuột TRÁI"); else if (e.Button==MouseButtons.Middle)

MessageBox.Show("Sự kiện MouseClick xảy ra khi bạn Click chuột GIỮA"); else if (e.Button==MouseButtons.Right)

MessageBox.Show("Sự kiện MouseClick xảy ra khi bạn Click chuột PHẢI"); }

4.2.2.2. Label

Chức năng: Dùng để hiển thị các thông báo, lời nhắc trên form.

Phân loại:

 Label dùng để hiển thị tiêu đề hay văn bản mang tính mô tả, mà người dùng không thể thay đổi.

 Label dùng để định danh cho các điều khiển khác trên Form được gọi là Label mô tả.

 Label dùng để hiển thị kết quả đầu ra được gọi là Label đầu ra.

Một số thuộc tính hay dùng của label:

 AutoSize - Cho phép tự động thay đổi kích thước của Label để vừa với nội dung.

 BoderStyle - Xac định hình dạng đường viền của Label.

 Font - Tên font, kiểu và kích thước của văn bản được hiển thị trên Label.

 Location – Vị trí của Label trên Form tương ứng với góc trên bên trái của Form.

 Size - Chỉ ra chiều rộng và chiều cao của Label (bằng pixel).

 Text - Văn bản được hiển thị trên Label.

 TextAlign - Chỉ ra cách văn bản được căn chỉnh trong phạm vi Label.

4.2.2.3. Button

Khái niệm: Button là các nút lệnh được thiết kế trên Form, dùng để xác nhận thực thi một chức năng con (hành động của người dùng).

Một số thuộc tính hay dùng của button:

 Location - Vị trí của Button trên Form so với góc trên cùng bên trái.

 Name - Tên được sử dụng để xác định Button. Tên nên có tiền tố Button.

 Size - Chiều rộng và chiều cao (bằng pixel) của Button.

 Text - Văn bản được hiển thị trên Button.

Một số lưu ý:

 Các Button thường đặt từ trên xuống dưới, bắt đầu từ góc trên bên phải của Form, hoặc được sắp xếp trên cùng một dòng bắt đầu từ góc dưới bên phải của Form.

 Khi bạn kéo điều khiển, IDE sẽ hiển thị các dòng màu xanh nước biển và màu tím gọi là đường gióng giúp các điều khiển và văn bản trên điều khiển được gióng thẳng với nhau.

 Các Button được gán nhãn bằng cách sử dụng thuộc tính Text của chúng. Các nhãn nay sử dụng kiểu viết hoa tiêu đề và càng ngắn càng tốt, nhưng vẫn

rõ nghĩa để người dùng có thể hiểu được.

4.2.2.4. TextBox

Điều khiển Textbox cho phép bạn nhập và hiển thị dữ liệu.

a) Thuộc tính (Properties).

AcceptsTab: Nhận một trong hai giá trị True hay False

- True: Khi nhấn phím Tab thì con trỏ (Focus) chỉ di chuyển bên trong Textbox (Với điều kiện thuộc tính Multiline=True).

- False: Khi nhấn Tab thì Focus di chuyển qua lại giữa các điều khiển trên Form. Thuộc tính này hay đặt bằng True trong các ứng dụng soạn thảo văn bản.

Anchor: Vị trí neo đậu của Textbox trên Form

MaxLenght: Số lượng kí tự lớn nhất cho phép nhập vào Textbox

Multiline: Nhận một trong hai giá trị True hay False.

- True: Cho phép nhập và hiển thị giá trị của Textbox trên nhiều dòng (người dùng có thể nhìn thấy toàn bộ giá trị Text của nó).

- False: Cho phép nhập/hiển thị giá trị của Textbox trên một dòng.

PasswordChar: Hiển thị giá trị của Textbox dưới dạng các kí tự mà bạn thay

thế (kí tự do người dùng nhập vào: *, #...).

ScrollBars: Cho phép hiển thị thanh trượt hay không? (Với điều kiện

thuộc tính Multiline=True mới nhìn thấy thanh cuộn).

CanUndo: Trả lại hai giá trị True/False.

- True: có thể Undo lại được (như Word).

- False: Ngược lại.

 Các thuộc tính: SelectedText, SelectionStart, SelectionLength, …

b) Phương thức (Methods).

AppendText: Nối một chuỗi (string) vào giá trị Text hiện có

củaTextbox

Copy, Cut, Paste: Xử lý phần nội dung bôi đen (như Word).

Focus: Chuyển Focus (con trỏ) vào TextBox

Clear: Xóa toàn bộ nội dung trong Textbox

Undo: Xử lý Undo như Word.

c) Sự kiện (Events).

TextChanged: Xảy ra khi giá trị Text của Texbox (hay gọi giá trị

Textbox) thay đổi.

MouseClick: Xảy ra khi người dùng Click chuột trên điều khiển

Textbox.

KeyPress: Xảy ra khi người dùng nhấn phím trên bàn phím (tất nhiên

Textbox phải đang Focus – Áp dụng sự kiện này để xử lý không cho phép nhập chữ vào Textbox…).

Một số ví dụ minh họa

Giả sử có một Textbox có tên là textBox1. Chúng ta sẽ minh họa Textbox qua sự kiện click của một Button có tên là btTextbox.

Minh họa thuộc tính Text của Textbox

private void btTextbox_Click(object sender, EventArgs e)

{ //Trước khi gán thuộc tính text

MessageBox.Show("Giá trị textbox trước khi gán: "+ textBox1.Text);

//Gán giá trị Text

textBox1.Text = "Chào các bạn";

//Sau khi gán

MessageBox.Show("Giá trị textbox sau khi gán: " + textBox1.Text);

}

Minh họa thuộc tính SelectedText của Textbox

private void btTextbox_Click(object sender, EventArgs e)

{

//Thuộc tính SelectedText lấy ra một chuỗi mà bạn bôi đen (Chọn)

//Bạn hãy bôi đen một vài từ trong Textbox sau đó Click vào Button này sẽ hiển thị

//Message thông báo từ bạn chọn

string str = textBox1.SelectedText;

MessageBox.Show("Từ bạn vừa chọn (bôi đen) là: "+str);

}

4.2.2.5. ComboBox.

Chức năng: Lưu trữ các mục dữ liệu (phần tử) dưới dạng danh sách.

Chú ý: Các điều khiển có rất nhiều thuộc tính, sự kiện hay phương thức giống nhau: Anchor, Dock, Font, ForeColor, Enabled, Visible, TabIndex, Focus, Click,……Các thuộc tính này là giống nhau với tất cả các điều khiển.

a) Thuộc tính (Properties).

Anchor: Xác định vị trí “neo đậu” của điều khiển so với Form.

AutoCompleteMode: Kiểu tự động tìm kiếm các phần tử trong Combobox.

Có một số lựa chọn sau (đi cùng thuộc tính AutoCompleteSource=ListItems):

- Suggest: Hiển thị kết qủa ra bên dưới.

- Append: Tự động điền vào Combobox và không hiển thị ra bên dưới.

- SuggestAppend = Suggest + Append

Cursor : Hình dáng của chuột khi di chuyển vào Combobox.

Items: Quản lý các phần tử trong Combobox (thêm các phần tử vào

Combobox, xóa đi…).

Text: Giá trị ứng với phần tử đang được chọn.

Sorted: Nếu chọn là True: Tự động sắp xếp các phần tử trong Combobox

theo giá trị tăng dần.

SelectedIndex: Get/Set chỉ số của phần tử đang chọn.

DropDownStyle: Kiểu của ComboBox (Simple/DropDown/DropDownList) b) Phương thức (Methods).

Add: Thêm một phần tử vào Combobox.

AddRange: Thêm một mảng các phần tử vào Combobox.

c) Sự kiện (Events).

SelectedIndexChanged: Xảy ra khi người dùng chọn phần tử khác.

Một số ví dụ minh họa

- Minh họa thuộc tinh Sorted

private void btCombobox_Click(object sender, EventArgs e)

{

//Mới đầu xóa hết các phần tử trong Combobox (nếu có)

comboBox1.Items.Clear();

//Add một số phần tử vào: Dùng phương thức Add hay AddRange comboBox1.Items.Add("5");

string[] MangString = { "1","3","8","4","7" };

comboBox1.Items.AddRange(MangString); //Số thứ tự của các ptử là: 5,1,3,8,4,7

//Duyệt các phần tử của Combobox - Trước khi gọi thuộc tính Sorted

foreach (string str in comboBox1.Items)

MessageBox.Show(str);// Thứ tự in ra là : 5, 1,3,4,8,7 //Gọi thuộc tính Sorted.

comboBox1.Sorted=true;

//Duyệt các phần tử của Combobox - Saukhi gọi thuộc tính Sorted foreach (string str in comboBox1.Items) MessageBox.Show(str);// Thứ tự in ra là : 1,3,4,5,7,8

}

Lấy danh sách ổ đĩa vào Combobox

//Lấy danh sách các ổ đĩa vào Combobox: Minh họa cho phương thức

AddRange

private void btGetDriver_Click(object sender, EventArgs e)

{

//Để thao tác vơi File, Folder. Trong C# hỗ trợ lớp Directory

//Lớp Directory là lớp tĩnh và nằm trong NameSpace: System.IO;

//Muốn dùng lớp này phải khai báo: using System.IO;

//Kết quả Directory.GetLogicalDrives() trả về một mảng kiểu string string[] MangDriver = Directory.GetLogicalDrives();

comboBox1.Items.AddRange(MangDriver);

comboBox1.SelectedIndex = 0;

}

4.2.2.6. ListBox.

Listbox cho phép ta tạo ra một danh sách các

phần tử để lựa chọn. Nếu như số lượng các phần

tử lớn hơn số lượng mà danh sách có thể hiển thị

trên màn hình (do ta thiết kế danh sách có kích

thước cao hay ngắn) thì một thanh cuộn sẽ tự

động thêm vào trong danh sách để cho ta có thể

list qua hết các phần tử. Danh sách List trình bày tất cả (hay một phần các phần tử tuỳ theo số lượng phần tử và độ dài trong giao diện của List), ta có thể chọn ra một hay nhiều phần tử cùng một lúc từ danh sách để xử lý.

a) Các thuộc tính của Listbox:

Tên

Thuộc tính

Giá Trị Diễn giải

MultiColumn True False (mặc

định)

Cho phép hiển thị các item thành các cột thay

vì 1 cột như mặc định của nó

SelectionMode None Không có item nào được chọn. Dách sách chỉ

để hiển thị xem mà thôi One Chỉ có 1 item được phép chọn.

MultiSimple Có nhiều item được phép chọn cùng một lúc.

MultiExtended Giống như MultiSimple nhưng ta có thể dùng

phím như SHIFT, các phím mũi tên để chọn. Sorted True False Sắp xếp danh sách theo thứ tự aphabet

Items Collection… Một hộp hội thoại cho phép bạn nhập vào

danh sách các item.

b) Sự kiện:

Sự kiện quan trọng và hay sử dụng nhất của Listbox là SelectedIndexChange. Sự kiện này được phát sinh khi bạn click chuột vào 1 item khác hay bạn dùng phím mũi tên để di chuyển giữa các item.

Ví dụ: Thiết kế form có chứa 1 listBox (đặt tên listBox1) và 1 textBox (đặt tên textBox1). Khi form hiển thị listBox1 được nạp vào tên các môn học. Người dùng

di chuyển qua các mục (bằng phím mũi tên lên xuống hoặc bằng chuột) nào thì textBox1 sẽ hiển thị nội dung mục đang chọn trên listBox1. Mã lệnh chương trình như sau:

Sự kiện Form1_load:

private void Form1_Load(object sender, EventArgs e)

{ listBox1.Items.Add("Toán rời rạc");

listBox1.Items.Add("Lập trình hướng sự kiện");

listBox1.Items.Add("Lập trình Web");

listBox1.Items.Add("Lập trình đồ họa");

}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

{ textBox1.Text = listBox1.Items[listBox1.SelectedIndex].ToString(); }

Kết quả thực thi chương trình:

4.2.2.7. CheckListBox

CheckedListBox thừa kế từ ListBox nên sẽ có các thuộc tính và phương thức của ListBox.

CheckedListBox là một ListBox chứa các phần tử là CheckBox

Các thuộc tính:

 CheckedIndices: Trả về một collection các chỉ số được đánh dấu trong CheckedListBox.

 CheckedItems: Trả về một collection các phần tử được đánh dấu trong CheckedListBox.

 CheckOnClick: Nếu bằng true thì các phần tử được đánh dấu khi nhận một nhấn đơn còn false thì phần tử sẽ được đánh dấu khi nhận một click đúp chuột.

 Items: Trả về các một collection gồm các phần tử của CheckedListBox SelectedItem Lấy hoặc thiết lập phần tử vừa được chọn trong CheckedListBox.

 SelectedItems: Lấy hoặc thiết lập các phần tử được chọn trong CheckedListBox.

4.2.2.8. CheckBox

Chức năng: Hiển thị danh sách mục rời rạc và cho phép người dùng lựa chọn một hoặc nhiều giá trị bằng cách đánh dấu tích ()

Ô đánh dấu (checkbox) tương tự như nút nhấn, chỉ khác là chúng dùng để biểu hiện trạng thái chuyển đổi giữa có/không (yes/no) hoặc tắt mở (on/off). Mỗi lần ta nhắp chuột vào ô chọn hay dùng nhấn phím space bar khi checkbox đang focus thì nó thay đổi trạng thái từ đựơc đánh dấu sang bỏ đánh dấu hoặc ngược lại.

a) Thuộc tính (Properties).

Tên Thuộc

tính

Giá Trị Diễn giải

CheckAlign TopLeft – TopCenter – TopRight Canh lề checkbox: trên bên trái

– giữa phải của khung checkbox

MiddleLeft – MiddleCenter – MiddleRight

(mặc định)

ở giữa – bên trái – bên phải của khung checkbox

BottomLeft – BottomCenter – BottomRight

bên dưới trái – giữa – phải của khung checkbox

RightToLeft Yes

No

Chữ nằm bên phải hay bên trái ô checkbox.

FlatStyle Flat checkbox sẽ bằng phẳng

Popup Giống Flat nhưng khi move

mouse lên trên nó thì giống standard và khi bỏ mouse ra thì

nó trở lại như cũ (Flat) Standard (mặc định) checkbox lõm xuống (3D)

System Giống standard nhưng sẽ thay

đổi theo hệ điều hành Checked True

False

Chọn checkbox (đánh dấu) hay không chọn checkbox.

CheckState checked checkbox đang được đán dấu

unchecked checkbox không được đánh dấu

indeterminate trạng thái này chỉ có tác dụng khi thuộc tính ThreeState = true

checkbox ở trạng thái không hoạt động

Một phần của tài liệu Bài giảng lập trình hướng sự kiện it09 Đại học mở hà nội (Trang 35 - 58)

Tải bản đầy đủ (PDF)

(132 trang)