Bài 4: Các đối tượng trên Windows Form Giới thiệu Thư viện Microsoft .NET framework chứa một tập phong phú các lớp dùng để tạo các ứng dụng Windows trong không gian tên System. Các lớp điều khiển cơ bản như các lớp Label, TextBox, Button, CheckBox, ListBox… đến các điều khiển chuyên biệt như MenuStrip, StatusStrip, ToolStrip. Người đọc sẽ tìm thấy tất cả các công cụ cần thiết để quản lý các ứng dụng giao diện đa tài liệu MDI (Multiple Document Interface), tích hợp việc trợ giúp ngữ cảnh, và ngay cả tạo các giao diện người dùng đa ngôn ngữ, kiểm tra dữ liệu hợp lệ… Mục tiêu của bài: Nhằm trang bị cho người học: - Kiến thức và kỹ năng về việc sử dụng các đối tượng trên Form. - Kiến thức và kỹ năng về việc lựa chọn các sự kiện sử dụng cho phù hợp.
I/ Các điều khiển cơ bản 1/ Nhãn (Label) Các điều khiển Label đặt chuỗi tĩnh trên Form, thường sử dụng để cung cấp chuỗi mô tả cho các điều khiển khác. Chuỗi đặt trong thuộc tính Text, và được canh lề bởi thuộc tính TextAlign. Thuộc tính Mô tả string Text Truy cập hay thiết lập văn bản hiển thị trên Label label1.Text = "Hello"; bool AutoSize Truy cập hay thiết lập giá trị nếu là true chỉ rõ điều khiển tự động thay đổi kích thước theo chiều dài của văn bản trên Label ContentAlignment Truy cập hay thiết lập giá trị chỉ rõ canh lề văn bản trên Label TextAlign bool AutoEllipsis Truy cập hay thiết lập giá trị nếu là true, chuỗi văn bản không vừa khít với Label, sẽ hiển thị dấu … cuối của chuỗi. Thuộc tính này không có tác dụng nếu thuộc tính AutoSize là true BorderStyle BorderStyle Truy cập hay thiết lập kiểu viền của điều khiển, là các hằng của enumeration BorderStyle gồm Fixed3D, FixedSingle và None label1.Fixed3D; 47 bool UseMnemonic Truy cập hay thiết lập giá trị nếu là true, ký tự đi sau dấu & trong thuộc tính Text là phím truy cập, nghĩa là bạn có thể sử dụng Alt + ký tự để chuyển focus đến Label Bảng 4.1 Các thuộc tính của Nhãn 2/Nhãn liên kết (LinkLabel) LinkLabel là một nhãn đặc biệt kế thừa từ lớp Label, và bổ sung một số thuộc tính của nhãn biểu diễn dạng liên kết.
Ví dụ, nhiều ứng dụng cung cấp một liên kết đến website công ty trong cửa sổ About. Bạn cần xử lý sự kiện LinkClicked để tạo chức năng liên kết cho nhãn liên kết. Trong phương thức xử lý sự kiện này, thiết lập thuộc tính LinkVisited là true để màu của liên kết được cập nhật thích hợp. Sử dụng phương thức System.Start("URL") để hiển thị trang web với địa chỉ URL trong trình duyệt.Text = "See http://www.LinkArea = new LinkArea(4, 26); linkLabel1.HoverUnderline; private void linkLabel1_LinkClicked(Object sender, LinkLabelLinkClickedEventArgs e) { linkLabel1.LinkVisited = true; System.Start("http://www.com/"); } 3/ Nút lệnh (Button) Nút lệnh thực hiện một thao tác nào đó.
Thành viên Mô tả void PerformClick() Phát sinh sự kiện click button FlatStyle FlatStyle Truy cập hay thiết lập giá trị chỉ kiểu button, là các hằng của enumeration System.FlatStyle như là Flat, Popup, Standard, System btnHienThi.Popup; FlatButtonAppearance Truy cập hay thiết lập màu viền, kích thước nét viền, màu nền khi di FlatAppearance chuyển mouse hay nhấn mouse trên nút lệnh FlatStyle FlatStyle button1.LightCyan; Thiết lập thuộc tính FlatStyle là FlatStyle.Flat để các thiết lập thuộc tính FlatAppearance có tác dụng: button1.2 Các thành viên của lớp Button 48 4/ Hộp văn bản (TextBox) TextBox cho phép người dùng nhập vào thông tin văn bản. TextBox cung cấp một tập các tính năng định nghĩa sẵn mà người dùng có thể truy cập thông qua menu ngữ cảnh.1 TextBox với menu ngữ cảnh Nhiều tính năng thuộc lớp TextBox và một số tính năng thuộc lớp cơ sở TextBoxBase được kế thừa bởi lớp MaskedTextBox và RichTextBox Thành viên Mô tả string Text Truy cập hay thiết lập văn bản hiển thị trên TextBox bool ReadOnly Truy cập hay thiết lập giá trị nếu là true, văn bản trong TextBox là chỉ đọc bool ScrollBars Truy cập hay thiết lập giá trị nếu là true, sẽ hiển thị thanh cuộn trong hộp nhập nhiều dòng bool Multiline Multiline truy cập hay thiết lập giá trị, nếu là true, cho phép bool AcceptsReturn nhập văn bản nhiều dòng vào TextBox bool WordWrap AcceptsReturn nếu là true, khi đó dòng mới có thể chèn vào TextBox khi người dùng ấn phím Enter Khi bổ sung chuỗi nhiều dòng vào TextBox, ngăn cách các dòng bởi ký tự \r\n, ví dụ “Line1\r\nLine2” WordWrap nếu là true, sẽ cho phép cuộn dòng bool CanUndo Truy cập hay thiết lập văn bản trong TextBox có thể phục hồi (undo) hay không void Cut(), Copy(), Paste(string text) Các phương thức này cho phép chọn khối văn bản, hủy chọn void Clear(), Undo() và sao chép, cắt văn bản vào bộ nhớ, và dán văn bản từ bộ nhớ ra TextBox, phục hồi. void Select(int start, int length) void SelectAll(), DeselectAll() 49 CharacterCasing CharacterCasing Truy cập hay thiết lập giá trị Lower, Normal, Upper thuộc enumeration CharacterCasing để chuyển văn bản trong TextBox thành chữ thường hay hoa string[] Lines Truy cập hay thiết lập mảng các dòng trong TextBox int MaxLength Truy cập hay thiết lập số tối đa ký tự có thể vào TextBox. Giá trị mặc định là 0 nghĩa là không giới hạn char PasswordChar PasswordChar truy cập hay thiết lập ký tự xuất hiện trong bool UseSystemPasswordChar TextBox, thay thế cho các văn bản trong TextBox để che dấu thông tin.PasswordChar = „*‟; UseSystemPasswordChar truy cập hay thiết lập giá trị nếu là true sẽ sử dụng ký tự mật khẩu định nghĩa bởi hệ thống string SelectedText SelectionStart và SelectionLength truy cập hay thiết lập vị trí int SelectionLength bắt đầu và kết thúc của văn bản được chọn hiện hành trong TextBox int SelectionStart SelectedText truy cập hay thiết lập văn bản được chọn hiện hành trong TextBox Bảng 4.3 Các thành viên của lớp TextBox 5/ Hộp đánh dấu (CheckBox) và nút lựa chọn (RadioButton) CheckBox và RadioButton cung cấp thuộc tính Checked truy cập hay thiết lập giá trị kiểu bool chỉ rõ điều khiển đang được chọn hay không.
Sau khi trạng thái thay đổi, sự kiện CheckedChanged phát sinh. Bạn có thể tạo một CheckBox ba trạng thái đặc biệt bằng cách thiết lập thuộc tính ThreeState là true. Thuộc tính CheckState truy cập hay thiết lập giá trị chỉ rõ điều khiển đang được chọn, không chọn hay trạng thái trung gian (tô bóng nhưng không chọn), bởi các giá trị thuộc enumeration CheckState là Checked, Unchecked, Indeterminate. Thuộc tính AutoCheck mặc định là true, sẽ thay đổi trạng thái của điều khiển khi người dùng kích vào điều khiển, nếu là false, sẽ ngăn cản người dùng thay đổi trạng thái điều khiển.
Nếu nhóm các RadioButton thành một nhóm bởi điều khiển GroupBox, rồi thì chỉ có một RadioButton được chọn trong nhóm. Ví dụ: using System; using System.Forms; public partial class Form1 : Form { private void Form1_Load(object sender, EventArgs e) { rbred.Checked = true; } 50 private void rbred_CheckedChanged(object sender, EventArgs e) { this.Pink; } private void rbgreen_CheckedChanged(object sender, EventArgs e) { this.LightGreen; } private void rbblue_CheckedChanged(object sender, EventArgs e) { this.2: RadioButton II/ Các điều khiển nâng cao ListBox, ComboBox .NET cung cấp ba điều khiển danh sách: ListBox, CheckedListBox và ComboBox. Chúng thừa kế từ lớp trừu tượng ListControl, định nghĩa các tính năng cơ sở cho phép sử dụng điều khiển danh sách để ràng buộc dữ liệu. Các điều khiển danh sách có thể ràng buộc danh sách dữ liệu như DataSet, DataTable, mảng, ArrayList… bởi thuộc tính DataSource string[] thanhPho = {"Đà nẵng","Huế","Sài gòn","Nha trang","Hà nội","Đà lạt"}; listBox1.DataSource = thanhPho; checkedListBox1.DataSource = thanhPho; Có thể truy cập hay thiết lập mục chọn hiện hành sử dụng thuộc tính SelectedIndex để xác định chỉ số của mục chọn hiện hành, hay sử dụng thuộc tính Text, SelectedValue, SelectedItem để xác định mục chọn label1.SelectedIndex = 0; Có thể chọn nhiều mục từ điều khiển danh sách, sử dụng tập SelectedIndices hay SelectedItems trả về một tập các mục chọn.
Thuộc tính SelectionMode chỉ rõ 51 hộp danh sách có thể chọn nhiều mục hay không, xác định bởi các giá trị thuộc enumeration SelectionMode: - MultiExtended: chọn nhiều mục bằng cách nhấn giữ Ctrl hay Shift khi kích chọn mục để chọn nhiều mục - MultiSimple: chọn một mục bằng cách kích mouse chọn hay nhấn phím trống CheckedListBox không hỗ trợ Ctrl, Shift, nhưng cho phép nhiều mục được chọn. Thuộc tính CheckedIndices và CheckedItems cung cấp thông tin về các mục chọn private void button1_Click(object sender, EventArgs e) { label1.Text = ""; foreach (string item in checkedListBox1.Text + item + " "; } Có thể truy cập tất cả các mục trong điều khiển danh sách bởi thuộc tính Items. Tập Items cho phép thêm vào và xóa mục trong danh sách checkedListBox1.CheckOnClick = true; checkedListBox1.RemoveAt(0); ComboBox hỗ trợ một số thuộc tính mục chọn như trên và tập Items. Kiểu ComboBox chỉ rõ bởi thuộc tính DropDownStyle: - ComBoxStyle.DropDown: danh sách không giới hạn, người dùng có thể vào thông tin tùy ý - ComboBoxStyle.DropDownList: chỉ cho phép chọn mục có sẵn trong danh sách.
III/ Image,ImageList 1/PictureBox PictureBox là điều khiển để hiển thị hình ảnh. Các thuộc tính thường dùng của PictureBox như sau: - Thuộc tính Image xác định hình ảnh cần hiển thị - Thuộc tính SizeMode thiết lập giá trị chọn từ enumeration PictureBoxSizeMode: 52 - AutoSize: PictureBox thay đổi kích thước bằng image - CenterImage: image hiển thị ở giữa của PictureBox, và nếu image lớn hơn PictureBox sẽ bị cắt phần xung quanh image - Normal: image đặt ở góc trái trên của PictureBox, nếu image sẽ bị cắt nếu kích thước lớn hơn PictureBox - StretchImage: image phóng to hay thu nhỏ vừa với kích thước của PictureBox - Zoom: kích thước của image tăng hay giảm theo PictureBox và đảm bảo tỷ lệ chiều cao và rộng của image Ví dụ: pictureBox1.StretchImage; 2/ ImageList Công dụng: Quản lý các hình ảnh được chứa trong các điều khiển khác như: ListView, TreeView, ToolStrip,… Tạo ImageList: Chọn công cụ và kéo thả vào form. Các thuộc tính thường dùng: Thuộc tính Ý nghĩa Image Các hình được quản lý bởi ImageList - Khi chọn sẽ xuất hiện công cụ Images Collection Editor, cho phép thêm, xoá, sắp xếp các ảnh. 53 IV/ListView, TreeView 1/ ListView - Dùng để hiển thị dữ liệu theo các dòng và các cột + Có thể chọn một hoặc nhiều dòng + Có thể hiển thị các biểu tượng theo các dòng - Thuộc tính: Thuộc tính Ý nghĩa CheckBoxes Có/Không xuất hiện các checkbox trên các dòng dữ liệu.
Mặc định là False Columns Các cột hiển thị trong chế độ Details FullRowSelect Chọn được nhiều phân tử trong ListView GridLines Hiển thị lưới (Chỉ hiển thị trong chế độ Details) Items Mảng các dòng trong ListView LargeImageList Danh sách ảnh dạng lơn hiển thị trên ListView SmailImageList Danh sách ảnh dạng nhỏ hiển thị trên ListView MultiSelect Có/Không cho phép chọn nhiều dòng.