- Trang Chủ
- Tin học văn phòng
- Giáo trình Xây dựng ứng dụng quản lý cơ bản (Nghề: Tin học ứng dụng - Trình độ Trung cấp): Phần 2 - Trường Cao đẳng Nghề An Giang
Xem mẫu
- 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.Windows.Forms. 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.BorderStyle =
System.Windows.Forms.BorderStyle.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.Diagnostics.Process.Start("URL") để hiển thị trang web với địa chỉ URL
trong trình duyệt.
Ví dụ:
linkLabel1.Text = "See http://www.google.com/";
linkLabel1.LinkArea = new LinkArea(4, 26);
linkLabel1.LinkBehavior = LinkBehavior.HoverUnderline;
private void linkLabel1_LinkClicked(Object sender, LinkLabelLinkClickedEventArgs e) {
linkLabel1.LinkVisited = true;
System.Diagnostics.Process.Start("http://www.google.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.Windows.Forms.FlatStyle như là Flat, Popup,
Standard, System
btnHienThi.FlatStyle = System.Windows.Forms.FlatStyle.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.FlatAppearance.BorderColor = Color.LightSteelBlue;
button1.FlatAppearance.MouseOverBackColor=Color.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.FlatStyle=FlatStyle.Flat;
Bảng 4.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.
Hình 4.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. textBox1.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.Windows.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.BackColor = Color.Pink;
}
private void rbgreen_CheckedChanged(object sender, EventArgs e) {
this.BackColor = Color.LightGreen;
}
private void rbblue_CheckedChanged(object sender, EventArgs e) {
this.BackColor = Color.LightBlue;
}
}
Hình 4.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.Text = checkedListBox1.SelectedValue.ToString();
label1.Text = checkedListBox1.Text;
label1.Text = checkedListBox1.SelectedItem.ToString();
listBox1.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.CheckedItems)
label1.Text = label1.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.Items.Add("Đà nẵng");
checkedListBox1.Items.Remove("Đà nẵng");
checkedListBox1.Items.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.Image = System.Drawing.Image.FromFile("pic.bmp");
pictureBox1.SizeMode = PictureBoxSizeMode.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. Mặc định là True
SelectedItems Mảng các dòng được chọn
View Kiểu hiển thị của ListView
Icons:Hiển thị danh sách theo các biểu tượng
54
- List: Hiển thị danh sách theo một cột
Details: Hiển thị ListView theo danh sách nhiều cột
Phương thức:
Phương thức Công dụng
Add Thêm một dòng vào ListView
Clear Xóa tất cả các dòng của ListView
Remove Xóa một dòng trong ListView
RemoveAt(index) Xóa một dòng ở vị trí index
Sự kiện thường dùng: ItemSelectionChanged: Xảy ra khi chọn một dòng.
Ví dụ:
Thiết kế form nhập, sửa, xóa dữ liệu như hình minh họa.
Cách thực hiện:
Thiết kế Form và đặt tên các đối tượng
- txtId, txtFirstName,txtLastName,txtAddress.
- btnNew, btnEdit,btnDelete,btnSave,btnCancel.
55
- Đặt thuộc tính cho ListView1
Columns: Thêm 4 cột
FullRowSelect: True
GridLine: True
MulitiSelect: False
View: Details
Xử lý sự kiện các button
private void btnNew_Click(object sender, EventArgs e)
{
txtId.Clear();
txtFirstName.Clear();
txtLastName.Clear();
txtAddress.Clear();
}
private void btnEdit_Click(object sender, EventArgs e)
{
txtId.Focus();
}
private void btnCancel_Click(object sender, EventArgs e)
{
txtId.Clear();
txtFirstName.Clear();
txtLastName.Clear();
txtAddress.Clear();
}
private void btnDelete_Click(object sender, EventArgs e)
{
try
{
listView1.Items.RemoveAt(listView1.SelectedIndex);
}
catch(Exception)
{}
}
public void listView1_ItemSelectionChanged(object sender,
ListViewItemSelectionChangedEventArgs e)
{
txtId.Text=listView1.Items[e.ItemIndex].SubItems[0].Text;
txtFirstName.Text=listView1.Items[e.ItemIndex].SubItems[1].Text;
txtLastName.Text=listView1.Items[e.ItemIndex].SubItems[2].Text;
txtAddress.Text=listView1.Items[e.ItemIndex].SubItems[3].Text;
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
56
- 2/ TreeView
- Hiển thị thông tin theo các nút(node)
- Các nút cha có các nút con
- Nút đầu tiên gọi là nút gốc
+Ấn dấu [+] để mở nút
+ Ấn dấu [-] để thu gọn nút
- Mỗi nút có hình ảnh kèm theo
- Thuộc tính:
Thuộc tính Ý nghĩa
CheckBoxes Có/Không xuất hiện các checkbox treen các node.
Mặc định là False
Checked Có/Không một Node được check( Thuộc tính
CheckBoxes phải được đặt là True)
ImageList Chỉ ra danh sách ảnh hiển thị trên các node
Nodes Mảng các TreeNodes trong TreeView
Nodes.Add: Bổ sung một node vào cây
Nodes.Clear: Xóa toàn bộ các node trên cây
Nodes.Remove: Xóa một node trên cây và các
node con của nó
SelectedNode Node hiện thời được chọn
FullPath Chỉ ra đường dẫn đến node bắt đầu từ node gốc
SelectedImageIndex Chỉ ra chỉ số ảnh được hiển thị trên node khi node
được chọn
Text Text hiển thị của Node
ImageIndex Chỉ ra chỉ số ảnh được hiển thị trên node khi node
không được chọn
FirstNode Node con đầu tiên của node
LastNode Node con cuối cùng của node
57
- PrevNode Node con trước của node con hiện thời
NextNode Node con tiếp theo node hiện thời
Phương thức:
Phương thức Công dụng
Collapse Thu nhỏ các node con của node
Expand Mở rộng các node con của node
ExpandAll Mở rộng tất cả các node con
GetNodeCount Trả về số lượng node con
Sự kiện:
AfterSelect: Xảy ra khi một node được chọn.
BeforeExpand: Xảy ra khi mở rộng một node.
Ví dụ 3.3:
private void AddTreeView_Load(object sender, EventArgs e)
{
treeView1.ImageList=imageList1;
comboBox1.Items.Add(“Image1”);
comboBox1.Items.Add(“Image2”);
comboBox1.SelectedIndex=0;
}
private void btnAddRoot_Click(object sender, EventArgs e)
{
if(txtInput.Text.Trim()==””) return ;
TreeNode childNode=new TreeNode();
childNode.Text=txtInput.Text;
childNode.ImageIndex=comboBox1.SelectedIndex;
58
- treeView1.Nodes.Add(childNode);
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
currentNode=e.Node;
}
private void btnAddchild_Click(object sender, EventArgs e)
{
if(txtInput.Text.Trim()==””) return;
TreeNode childNode=new TreeNode();
childNode.Text=txtInput.Text;
childNode.ImageIndex=comboBox1.SelectedIndex;
currentNode.Nodes.Add(childNode);
currentNode.ExpandAll();
}
private void btnAddDelete_Click(object sender, EventArgs e)
{
currentNode.Remove();
}
V/ Bố cục Control
Cách bố trí (Layout) là một vấn đề quan trọng và không thể thiếu trong việc
thiết kế giao diện. GUI hỗ trợ nhiều kiểu layout tương ứng với mỗi control được
gọi là layout container/layout control. Các layout container này được kế thừa từ
lớp System.Windows.Controls.Panel và có cách sắp xếp và bố trí các control bên
trong nó khác nhau.
1/Sử dụng thuộc tính Anchor
– Cho phép control phản ứng lại với thao tác resize của form
• Control có thể thay đổi vị trí tương ứng với việc resize của form
• Control cố định không thay đổi theo việc resize của form
– Các trạng thái neo
• Left: cố định theo biên trái
• Right: cố định theo biên phải
• Top: cố định theo biên trên
• Bottom: cố định theo biên dưới
59
- 2/ Sử dụng thuộc tính Docking
Các control có thể gắn (dock) với một cạnh nào đó của form, hoặc container
của control.
3/ Sử dụng Containers
Container là nhóm Controls dùng làm vùng chứa - có thể chứa các Control
khác: Panel, FlowLayoutPanel, SplitContainer, TableLayoutPanel, Goupbox,
TabControl
Panel
- Công dụng: Chứa nhóm các control. Không có caption, có thanh cuộn
(scrollbar)
FlowLayoutPanel
- Công dụng: FlowLayoutPanel là một điều khiển kiểu Panel, nó sẽ tự động
sắp xếp các điều khiển đặt bên trong nó theo một quy tắc định trước khi thêm các
điều khiển vào cũng như thay đổi kích cỡ của nó.
TableLayoutPanel
- Công dụng: TableLayoutPanel là một điều khiển kiểu Panel được chia ra
thành các ô theo dòng cột để đặt điều khiển vào.
Có thể thêm các dòng và các cột cho điều khiển qua các thuộc tính Columns và
Rows của TableLayoutPanel, hay qua thực đơn ngữ cảnh khi nhấn phải chuột
trên TableLayoutPanel.
SplitContainer
- Công dụng: SplitContainer là một Panel chứa hai Panel bên trong. Hai panel
này có thể được thay đổi kích thước nhờ một splitter, một vạch thẳng phân cách
hai panel.
Groupbox
- Công dụng: Hiển thị một khung bao quanh một nhóm control. Có thể hiển thị
tiêu đề thông qua thuộc tính Text
60
- - Khi xóa một GroupBox thì các control chứa trong nó bị xóa theo.
TabControl
- Cho phép thể hiện nhiều page trên một form duy nhất
- Mỗi page chứa các control tương tự như group control khác. Mỗi page có
tag chứa tên của page. Kích vào các tag để chuyển qua lại giữa các page
VI/ Các hộp thoại thông điệp
1/Hộp thoại thông báo đơn giản
.NET cung cấp một số dạng hộp thoại xây dựng sẵn. Phổ biến là lớp
MessageBox, hiển thị một hộp thoại thông báo đơn giản
Ví dụ: MessageBox.Show("You must enter a name.", "Name Entry Error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation) ;
Các kiểu button cho hộp thoại cung cấp bởi enumeration
MessageBoxButtons: AbortRetryIgnore, OK, OKCancel, RetryCancel, YesNo,
YesNoCancel
Các kiểu biểu tượng cho hộp thoại cung cấp bởi enumeration
MessageBoxIcon: Asterisk, Information, Error, Hand, Stop, Exclamation,
Warning, Question, None.
Ví dụ: Kiểm tra người dùng muốn đóng Form hay không, và sử dụng thuộc
tính Cancel của lớp FormClosingEventArgs để hủy sự kiện đóng Form
Hình: Hộp đối thoại thông báo đơn giản
private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
DialogResult n = MessageBox.Show("Bạn có muốn thoát không?", "Thoát",
MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (n != DialogResult.OK) e.Cancel = true;
}
2/Hộp thoại phông chữ và màu
Hộp đối thoại màu cho phép người dùng chọn một màu từ bảng màu. Bổ
sung điều khiển ColorDialog vào Form hay bạn có thể tạo đối tượng của lớp
61
- ColorDialog, và thiết lập các thuộc tính cần thiết:
- Thuộc tính chính được dùng với lớp này là Color cho màu sắc người dùng
chọn
- Một tiện lợi khác là có thể hiển thị hộp đối thoại mở rộng, cho phép người
dùng định nghĩa màu sắc bằng cách thiết lập thuộc tính AllowFullOpen với giá trị
true.
- Thuộc tính ShowHelp nếu thiết lập true cho phép người dùng nhấn F1 để
hiện trợ giúp
Ví dụ: Hiển thị hộp thoại màu
Hình 4.3 Hộp đối thoại màu
ColorDialog colorDialog1 = new ColorDialog();
//colorDialog1. AllowFullOpen = false;
if (colorDialog1.ShowDialog() == DialogResult.OK)
textBox1.ForeColor = colorDialog1.Color;
Hộp đối thoại phông chữ cho phép người dùng chọn một kiểu phông chữ.
Bổ sung điều khiển FontDialog vào Form hay bạn có thể tạo đối tượng của lớp
FontDialog, và thiết lập các thuộc tính cần thiết:
- Thuộc tính quan trọng nhất là Font, trả về phông chữ được chọn.
- Color trả về màu font được chọn. Chú ý thuộc tính ShowColor phải là true
để hộp thoại hiển thị hộp danh sách chọn màu
- ShowColor nếu giá trị là true, hộp thoại sẽ hiển thị hộp danh sách chọn màu
- MaxSize truy cập hay thiết lập cỡ chữ lớn nhất người dùng có thể chọn
- MinSize truy cập hay thiết lập cỡ chữ nhỏ nhất người dùng có thể chọn
- ShowApply truy cập hay thiết lập giá trị chỉ rõ hộp thoại hiển thị nút Apply
hay không. Sự kiện Apply xảy ra trên hộp thoại khi người dùng chọn nút Apply.
62
- Nút Apply thường dùng khi người dùng muốn xử lý phông chữ chọn từ hộp thoại
trên ứng dụng, mà không cần phải đóng hộp thoại
- ShowEffects nếu giá trị là true mặc định, hộp thoại sẽ hiển thị các tùy chọn
Strikeout, Underline, và hộp danh sách chọn màu
Ví dụ: Hiển thị hộp thoại phông chữ
Hình 4.4: Hộp đối thoại phông chữ
private void button1_Click(object sender, EventArgs e) {
fontDialog1.ShowColor = true;
fontDialog1.MinSize = 12; fontDialog1.MaxSize = 24;
fontDialog1.ShowApply = true;
if (fontDialog1.ShowDialog() == DialogResult.OK) {
textBox1.Font = fontDialog1.Font;
textBox1.ForeColor = fontDialog1.Color;
}
}
private void fontDialog1_Apply(object sender, EventArgs e) {
textBox1.Font = fontDialog1.Font;
textBox1.ForeColor = fontDialog1.Color;
}
VII/ Các hộp thoại tập tin
1/ Hộp thoại lưu tập tin
Công dụng: Tạo ra hộp thoại Save File.
Tạo SaveFileDialog: Nhắp đúp vào control
Thuộc tính:
Thuộc tính Ý nghĩa
AddExtension True cho phép thêm vào tên mở rộng
CheckFileExsits True sẽ xuất hiện hộp thoại với chuỗi cảnh báo nếu
người sử dụng chọn tập tin không tồn tại
CheckPathExits True sẽ kiểm tra đường dẫn có hợp lệ hay không
trước khi trả về
63
- CreatePrompt Cửa sổ cảnh báo xuất hiện nếu tập tin chuẩn bị ghi ra
chưa tồn tại
DefaultExt Chọn tên mở rộng mặc định nếu người sử dụng
không cung cấp tên mở rộng cho tập tin.
FileName Gán hay trả về tên tập tin chọn
Filter Khai báo chuỗi lọc các loại tập tin
InitialDirectory Thư mục sẽ chọn khi hộp thoại kích hoạt. Nếu
không cung cấp giá trị cho thuộc tính này thì ổ đĩa
mặc định sẽ được chọn
Overwriteprompt True thì cửa số cảnh báo khi tập tin sẽ ghi đang tồn
tại
RestoreDirectory Phục hồi lại thư mục hiện hành trước khi đóng hộp
thoại
Title Tiêu đề của hộp thoại
2/ Hộp thoại mở tập tin
Công dụng: Tạo ra hộp thoại Open File.
Tạo OpenFileDialog: Nhắp đúp vào control
Thuộc tính:
Thuộc tính Ý nghĩa
AddExtension True cho phép thêm vào tên mở rộng
CheckFileExsits True sẽ xuất hiện hộp thoại với chuỗi cảnh báo nếu
người sử dụng chọn tập tin không tồn tại
CheckPathExits True sẽ kiểm tra đường dẫn có hợp lệ hay không trước
khi trả về
DefaultExt Chọn tên mở rộng mặc định nếu người sử dụng không
cung cấp tên mở rộng cho tập tin.
FileName Gán hay trả về tên tập tin chọn
FileNames Gán hay trả về mảng chứa tên tập tin chọn
Filter Khai báo chuỗi lọc các loại tập tin.
InitialDirectory Thư mục sẽ chọn khi hộp thoại kích hoạt. Nếu không
cung cấp thuộc tính này thì ổ đĩa mặc định sẽ được chọn
MultiSelect True cho phép bạn chọn nhiều tập tin
ReadOnlyChecked True là Check vào nút Check có chuỗi open as read-only
64
- RestoreDirectory Phục hồi lại thư mục hiện hành trước khi đóng hộp thoại
ShowReadOnly True trình bày nút Check có chuỗi Open as read-only
Title Tiêu đề hộp thoại
VIII/ Thực đơn chính, thực đơn ngữ cảnh
MenuStrip: là menu chính xuất hiện ở trên đỉnh của Form. Để tạo menu
chính sử dụng điều khiển MenuStrip
Menu ngữ cảnh (Context menu): là menu xuất hiện tùy vào ngữ cảnh khi
kích phải trên điều khiển nào đó. Menu ngữ cảnh thường chứa các tùy chọn thường
xuyên sử dụng. Để tạo menu ngữ cảnh, sử dụng điều khiển ContextMenuStrip.
1/ MenuStrip
Menu là phần cần thiết của ứng dụng giao diện đồ họa. Các menu có thể
được thêm vào các ứng dụng Windows Forms rất dễ dàng.
Để thêm một menu vào một Form, đơn giản thêm điều khiển MenuStrip từ
thanh công cụ vào Form và thiết lập thuộc tính Items cho danh sách các mục menu.
Khi điều khiển MenuStrip được thêm vào Form nó sẽ xuất hiện trong vùng bên
dưới thiết kế Form. Khi biểu tượng này được chọn, menu chính sẽ xuất hiện trong
Form. Có thể chỉnh sửa các mục menu bằng cách gõ các mục menu khác nhau.
Xóa mục menu từ thanh menu bằng cách kích phải mục menu, chọn Delete. Sử
dụng thanh phân chia để chia các mục menu thành các nhóm bằng cách kích phải
trên mục menu, chọn Insert/ Separator.
Menu chính (MenuStrip) bao gồm danh sách các mục menu (đối tượng
ToolStripMenuItem). Có thể thêm, xóa các mục menu, sử dụng các phương thức
của ToolStripItemCollection Items.
- ToolStripItemCollection Items: thiết lập hay truy cập danh sách các mục
menu
Các thuộc tính thường dùng của mục menu ToolStripMenuItem:
- string Text: thiết lập hay truy cập văn bản hiển thị trên mục menu
- Image Image: thiết lập hay truy cập biểu tượng hình ảnh trước mỗi mục
menu
- string ToolTipText: thiết lập hay truy cập văn bản hiển thị khi rê mouse đến
mục menu
- bool AutoToolTip: thiết lập hay truy cập giá trị chỉ rõ mô tả ngắn có hiển thị
65
- hay không khi rê mouse đến mục menu
this.toolStripMenuItem1.AutoToolTip = true;
- ToolStripItemDisplayStyle DisplayStyle: thiết lập hay truy cập dạng hiển thị
mục menu dạng văn bản hay hình ảnh bởi các giá trị thuộc enumeration
ToolStripItemDisplayStyle là Image, ImageAndText, None hay Text:
this.toolStripMenuItem1.DisplayStyle=
ToolStripItemDisplayStyle.ImageAndText;
- TextImageRelation TextImageRelation: thiết lập hay truy cập mối quan hệ
vị trí văn bản và hình ảnh trên mục menu, bởi các giá trị thuộc enumeration
TextImageRelation
- bool Checked: thiết lập hay truy cập giá trị xác định có hay không xuất hiện
biểu tượng đánh dấu trước văn bản trên mục menu cho biết mục menu đang được
chọn hay thôi chọn
- CheckState CheckState: thiết lập hay truy cập giá trị chỉ rõ trạng thái của
mục menu bởi các giá trị thuộc enumeration CheckState là Checked, Unchecked,
Indeterminate
- LayoutStyle: thiết lập hay truy cập hướng trình bày của StatusStrip bởi các
giá trị thuộc enumeration ToolStripLayoutStyle
Hình 4.5: Form với MenuStrip và ToolStrip
2/Menu ngữ cảnh (Context Menu)
Các ứng dụng Windows cho phép người dùng kích phải trên điều khiển nào
đó sẽ xuất hiện một menu theo ngữ cảnh. Các menu theo ngữ cảnh có thể được
thêm vào các ứng dụng Windows Forms rất dễ dàng.
Để thêm một menu ngữ cảnh vào một Form, đơn giản thêm điều khiển
ContextMenuStrip từ thanh công cụ vào Form. Khi điều khiển ContextMenuStrip
được thêm vào Form nó sẽ xuất hiện trong vùng footer bên dưới bề mặt thiết kế
Form. Khi biểu tượng này được chọn, menu chính, nếu nó tồn tại sẽ không xuất
66
nguon tai.lieu . vn