-----
Câu hỏi 11.
Thuộc tính anchor dùng để làm gì?
Câu hỏi 12.
Thuộc tính Modifiers dùng để làm gì?
Câu hỏi 13.
Phân biệt phương thức Show() và ShowDialog()?
2.7 CheckBox
Bài 6. CheckBox
Checkalign để thay đổi vị trí của ô check so với phần chữ
Checked: 2 trạng thái (checked, unchecked)
CheckState: 3 trạng thái (checked, unchecked,
indeterminate). Cần thiết lập thuộc tính ThreeState là True. Trạng thái checked
và indeterminate đều trả về giá trị True, unchecked trả về giá trị False.
Vậy, ngoài khác biệt về số trạng thái (2 và 3), thì
Checked và CheckState còn khác nhau điều gì? Chúng khác nhau ở hai sự kiện là
CheckedChanged và CheckStateChanged. Ví dụ,
private void
checkBox1_Click(object sender, EventArgs e)
{
MessageBox.Show("Clicked");
}
private void checkBox1_CheckedChanged(object sender, EventArgs
e)
{
MessageBox.Show("CheckedChanged");
}
private void
checkBox1_CheckStateChanged(object sender, EventArgs e)
{
MessageBox.Show("CheckStateChanged");
}
Lab 5. Chương trình ví dụ sử dụng
checkbox
[Giao diện]
[Mô tả chức năng]
– Khi người dùng bấm vào nút Gửi ý kiến: lấy “tên” và ý kiến
của người dùng, xuất ra một MessageBox
[Đoạn mã tham khảo]
private void
btnGui_Click(object sender, EventArgs e)
{
string name = txtName.Text;
string haiLong = chkHaiLong.CheckState == CheckState.Checked ? "hài
lòng" : chkHaiLong.CheckState == CheckState.Unchecked
? "không hài lòng" : "phân vân";
string strShow = string.Format("Bạn {0} cảm thấy {1} về dịch vụ!",
name, haiLong);
MessageBox.Show(strShow);
}
Để ý cách sử dụng hàm string.Format("abcdef {0} ghijk
{1} mnop!", noiDung0, noiDung1). Nội
dung của biến noiDung0 sẽ được chèn vào {0}, nội dung của biến noiDung1 sẽ được
chèn vào {1}.
2.8 MessageBox
Bài 7. MessageBox
MessageBox không phải là một control mà là một lớp hỗ trợ.
Tại một thời điểm, chỉ có một MessageBox được xuất hiện trên
giao diện.
Để thêm tiêu đề cho cửa sổ MessageBox, sử dụng tham số
caption, ví dụ:
MessageBox.Show("Nội dung thông báo", "Nội dung của thanh tiêu đề (caption)");
MessageBox.Show("Bạn chưa nhập dữ liệu!", "Thông báo");
Để tùy chỉnh các nút cho cửa sổ MessageBox, sử dụng tham số
MessageBoxButton, ví dụ:
MessageBox.Show("Bạn có muốn đóng chương trình
không?", "Thông báo", MessageBoxButtons.YesNoCancel);
Để thêm biểu tượng (icon) cho cửa sổ MessageBox, sử dụng
tham số MessageBoxIcon, ví dụ:
MessageBox.Show("Bạn có muốn đóng chương trình
không?", "Thông báo", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
Để thiết lập nút được chọn mặc định (focus) cho cửa sổ
MessageBox, sử dụng tham số MessageBoxDefaultButton, ví dụ:
MessageBox.Show("Bạn có muốn đóng chương trình không?", "Thông báo", MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button3);
Có thể nhận kết quả trả về của cửa sổ MessageBox, để sử dụng
cho các xử lý khác, ví dụ:
DialogResult result = MessageBox.Show("Bạn có muốn
đóng chương trình không?", "Thông báo", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question,
MessageBoxDefaultButton.Button3);
if ( result == System.Windows.Forms.DialogResult.Yes )
{
MessageBox.Show("Người dùng
vừa bấm nút Yes");
}
Thực hiện Insert Snippets cho lệnh switch (Với các lệnh khác cách làm tương tự, chỉ cần
thay tên lệnh), cách làm như sau:
– Để dấu nháy chuột ở chỗ cần chèn lệnh switch,
– Sử dụng tổ hợp phím tắt Ctrl+K, + X
– Chọn Visual C#
– Chọn switch
– Thay chữ switch_on bằng tên biến (result)
– Gõ phím Enter 2 lần
2.9 Panel và FlowLayoutPanel
Bài 8. Panel và FlowLayoutPanel
Panel là một control dùng để chứa (gom nhóm) các control
khác, giúp thuận lợi trong việc thiết kế và xử lý.
Thêm một control và panel,
Button btn = new Button();
btn.Text = "New Button";
pnlTest.Controls.Add(btn);
Sử dụng FlowLayoutPanel để sắp xếp các control trong nó có
thứ tự.
2.10 RadioButton
Bài 9. RadioButton
RadioButton dùng để chọn một mục trong một nhóm các mục chọn.
Để tạo ra một nhóm các mục chọn, sử dụng control Panel.
Với RadioButton, kĩ năng cơ bản nhất cần nắm là: cách duyệt
các radio trong một panel, để biết được người dùng đã chọn radio nào.
Để gỡ bỏ chế độ chọn (checked) mặc định cho một radio, thiết
lập thuộc tính Tabstop là false.
Để khóa các radio trong một panel, thiết lập thuộc tính
Enable là false.
Để duyệt các radio trong một panel sử dụng cú pháp sau:
RadioButton rb = null;
// duyệt panel Câu hỏi 1
foreach(RadioButton
item in pnlCauHoi1.Controls)
{
if(item.Checked)
{
rb =
item;
}
}
Lab 6. Tạo một chương trình trắc
nghiệm đơn giản
[Giao diện khi chạy chương trình – GiaoDien1]
[Giao diện sau khi người dùng đã làm bài và bấm nút Nộp bài –
GiaoDien2]
[Xác nhận chắc chắn nộp bài từ người dùng – GiaoDien3]
[Mô tả chức năng]
– Chương trình cho phép người dùng chọn 01 câu trả lời cho từng
câu hỏi, không nhất thiết phải làm hết các câu hỏi, có thể không trả lời câu
nào cũng được
– Nếu người dùng chưa bấm nút “Nộp bài” thì nút “Thoát” bị
vô hiệu, để đảm bảo người dùng phải nộp bài mới được đóng chương trình
– Sau khi người dùng bấm nút Nộp bài thì:
+ Hiển thị cửa sổ thông
báo như GiaoDien3
+ Nếu người dùng bấm
Cancel thì cho tiếp tục làm bài
+ Nếu người dùng xác
nhận (OK) thì thực hiện các bước sau:
++ Nếu họ không trả
lời câu hỏi nào, thì xuất câu thông báo “Bạn chưa làm bài!”
++ Ngược lại, xuất kết quả như trong GiaoDien2
++ Vô
hiệu (khóa) nút “Nộp bài”, khóa các mục chọn như trong GiaoDien2
++ Mở
nút “Thoát” để người dùng có thể đóng chương trình
[Gợi ý cách làm]
– Khi khởi tạo form sẽ khóa nút btnThoat
– Khi người dùng bấm nút btnNopBai
{
Khai
báo các biến
string
kq = null; // để chứa chuỗi kết quả
RadioButton
rb = null; // để chứa nút người dùng đã chọn
int
flagXuat = 0; // để kiểm tra khi nào thì xuất dòng thông báo “Bạn chưa làm bài”,
khi nào thì xuất kết quả chọn của mỗi câu
Kiểm
tra kết quả trả về của GiaoDien3, nếu Cancel thì không làm gì, nếu là OK thì:
duyệt qua từng panel, kiểm tra xem nút radio nào được chọn (checked), lấy Tên
câu hỏi nối vào chuỗi kq, lấy phần Text của nút được chọn nối vào chuỗi kq, nối
thêm kí tự xuống hàng “\r\n”
Xuất
kq vào txtKetQua
}
</////
hết buổi 5
-----Tiếp theo: Lập trình UD Desktop_04_ComboBox DataBinding
Xem thêm: Danh sách các bài học