Giáo trình Lập trình cơ bản (Phần 2)
Một số khái niệm
Windows Forms là một tập hợp các thư viện lớpđược quản lý trong .NET
Framework để phát triển các ứng dụng desktop trên máy tính. Trong Windows Forms,
Form là một cửa sổ giao diện cho phép hiển thị thông tin và tương tác với người dùng.Tập bài giảng Lập trình cơ bản
Các ứng dụng Windows Forms thường được xây dựng bằng cách thêm các điều khiển
vào Form và xây dựng sự kiện tương ứng với các hành động của người dùng, chẳng
hạn như kích chuột hay bấm phím nào đó. Một điều khiển (control) là một thành phần
có giao diện riêng (User Interface) và có thể hiển thị dữ liệu hoặc nhận dữ liệu vào.
Để xây dựng một ứng dụng Windows Forms, có thể sử dụng rất nhiều đối
tượng của lớp thuộc các không gian tên khác nhau (namespace), tuy nhiên có một
không tên quan trọng không thể thiếu trong ứng dụng Windows Forms đó là
System.Windows.Forms.
System.Windows.Forms chứa các lớp dùng để tạo ứng dụng Windows với giao
diện người sử dụng mang các đặc điểm ưu việt có trên hệ điều hành Windows.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Lập trình cơ bản (Phần 2)
iết kế Form theo mẫu và gắn các điều khiển Bƣớc 4. Kết quả thiết kế Form Hình 4.57: Kết quả thiết kế Form bài tập mẫu về mảng hai chiều Bƣớc 5. Viết mã lệnh cho các sự kiện - Viết mã lệnh khai báo ma trận và biến int[,] A= new int [100,100]; int n, m, spt=0, i=0,j=0; - Viết mã lệnh cho sự kiện Load Form private void Form1_Load(object sender, EventArgs e) { vohieuhoa(false); txt_n.ResetText(); txt_n.TabIndex = 1; txt_n.Focus(); } - Viết mã lệnh cho hàm vô hiệu hóa các điều khiển khi Load Form private void vohieuhoa(bool gt) { txt_m.Enabled = gt; txt_giatri.Enabled = gt; 186 Tập bài giảng Lập trình cơ bản bt_demchia21.Enabled = gt; bt_lietkeSNT.Enabled = gt; bt_timMax.Enabled = gt; bt_tongle.Enabled = gt; bt_tongtunghang.Enabled = gt; group_Hienthi.Enabled = gt; group_ketqua.Enabled = gt; } - Viết mã lệnh cho hàm kiểm tra xâu rỗng bool kiemtra(string s) { if (string.IsNullOrWhiteSpace(s)) return true; else return false; } - Viết mã lệnh cho hàm kiểm tra dữ liệu nhập vào bool kiemtra_dulieu(string s) { bool kt; if (kiemtra(s)) return false; kt = int.TryParse(s, out n); return kt &&n>0; } - Viết mã lệnh cho sự kiện KeyUp của textbox tƣơng ứng với nhãn nhập số hàng private void txt_n_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (kiemtra_dulieu(txt_n.Text)) { txt_m.Enabled = true; txt_m.TabIndex = 1; txt_m.Focus(); } else { MessageBox.Show("Bạn chưa nhập đúng n"); txt_n.Focus(); vohieuhoa(false); } } } - Viết mã lệnh cho sự kiện KeyUp của textbox tƣơng ứng với nhãn nhập số cột private void txt_m_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (kiemtra_dulieu(txt_m.Text)) 187 Tập bài giảng Lập trình cơ bản { txt_giatri.Enabled = true; txt_giatri.TabIndex = 1; txt_giatri.Focus(); } else { MessageBox.Show("Bạn chưa nhập đúng m"); txt_giatri.TabIndex = 1; txt_m.Focus(); vohieuhoa(false); txt_m.Enabled = true; } } } - Viết mã lệnh cho sự kiện KeyUp của textbox tƣơng ứng với nhãn nhập giá trị private void txt_giatri_KeyUp(object sender, KeyEventArgs e) { bool kt; n = int.Parse(txt_n.Text); m = int.Parse(txt_m.Text); if (e.KeyCode == Keys.Enter) { kt = int.TryParse(txt_giatri.Text, out A[i, j]); if (kt) { rtbox_hienthi.Text += A[i, j].ToString() + " "; spt++; txt_giatri.ResetText(); txt_giatri.Focus(); j++; } if (j == m) { rtbox_hienthi.Text += "\n"; i++; j = 0; } if (spt == n * m) { MessageBox.Show("Nhập xong dãy", "Thông báo"); vohieuhoa(false); vohieuhoa2(); txt_m.Enabled = false; txt_n.Enabled = false; } } } - Viết mã lệnh cho hàm vô hiệu hóa các nút sau khi nhập xong ma trận private void vohieuhoa2() { bt_demchia21.Enabled = true; bt_lietkeSNT.Enabled = true; bt_timMax.Enabled = true; bt_tongle.Enabled = true; bt_tongtunghang.Enabled = true; } - Viết mã lệnh cho sự kiện kích chuột vào nút tìm giá trị lớn nhất private void bt_timMax_Click(object sender, EventArgs e) { rtbox_ketqua.ResetText(); int max = A[0, 0]; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (A[i, j] > max) max = A[i, j]; rtbox_ketqua.Text = "Giá trị lớn nhất của ma trận là:" + max.ToString(); } 188 Tập bài giảng Lập trình cơ bản - Viết mã lệnh cho sự kiện kích chuột vào nút tính tổng các số lẻ private void bt_tongle_Click(object sender, EventArgs e) { rtbox_ketqua.ResetText(); int s = 0; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (A[i, j] % 2 != 0) s += A[i, j]; rtbox_ketqua.Text = "Tổng các số lẻ của ma trận là: " + s.ToString(); } - Viết mã lệnh cho sự kiện kích chuột vào nút đếm các số chia hết cho 3 và 7 private void bt_demchia21_Click(object sender, EventArgs e) { rtbox_ketqua.ResetText(); int d = 0; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (A[i, j] % 21 == 0) d++; rtbox_ketqua.Text = "Ma trận có " + d.ToString() + " số chia hết cho cả 3 và 7"; } - Viết mã lệnh cho sự kiện kích chuột vào nút tính tổng từng hàng private void bt_tongtunghang_Click(object sender, EventArgs e) { int s; rtbox_ketqua.ResetText(); for (int i = 0; i < n; i++) { s=0; for (int j = 0; j < m; j++) s += A[i, j]; rtbox_ketqua.Text+= "Tổng hàng " + (i+1).ToString() + "là: " + s.ToString(); rtbox_ketqua.Text += "\n"; } } - Viết mã lệnh cho sự kiện kích chuột vào nút tính liệt kê các số nguyên tố private void bt_lietkeSNT_Click(object sender, EventArgs e) { rtbox_ketqua.Text=" Các số nguyên tố của ma trận là: "; int d = 0; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (kt_SNT(A[i, j])) { rtbox_ketqua.Text += A[i, j].ToString() + " "; d++; } if (d == 0) rtbox_ketqua.Text = "Ma trận không có số 189 Tập bài giảng Lập trình cơ bản nguyên tố"; } - Viết mã lệnh cho hàm kiểm tra số nguyên tố bool kt_SNT(int n) { bool kt; if (n < 2) kt = false; else { kt = true; for(int i=2;i<=n/2;i++) if (n % i == 0) { kt = false; break; } } return kt; } Bƣớc 6. Kết quả chạy chƣơng trình Hình 4.58: Kết quả chạy chương trình bài tập mẫu về mảng hai chiều Bài 4.11 Tạo một ứng dụng Windows Form thực hiện các công việc sau: 1. Nhập một ma trận số thực gồm n hàng, m cột (với n và m là hai số nguyên dƣơng). 2. Hiển thị ma trận. 3. Tìm số âm nhỏ nhất của ma trận. 4. Sắp xếp từng cột của ma trận theo thứ tự tăng dần. 5. Nhập số nguyên dƣơng k, xóa cột thứ k của ma trận nếu có. 190 Tập bài giảng Lập trình cơ bản 6. Tính trung bình cộng các phần tử có giá trị chẵn trong ma trận Bài 4.12 Tạo một ứng dụng Windows Form thực hiện các công việc sau: 1. Nhập một ma trận số thực vuông cấp n (với n là số nguyên dƣơng). 2. Hiển thị ma trận. 3. Tính tổng các phần tử nằm trên đƣờng chéo phụ của ma trận. 4. Tìm số âm lớn nhất trên đƣờng chéo chính của ma trận 5. Đếm các phần tử của ma trận có giá trị chia hết cho 3 và 5. Bài 4.13 Viết một chƣơng trình thực hiện các công việc sau: 1. Thiết kế Form theo mẫu Hình 4.59: Chương trình xử lý chuỗi Yêu cầu: - Nhãn chƣơng trình xử lý chuỗi: Font Time New Roman, chữ hoa, in đậm, cỡ chữ 16, căn giữa Form. - GroupBox nhập và kết quả: Font Time New Roman, cỡ chữ 14. - Điều khiển để nhập chuỗi A, chuỗi B và hiển thị kết quả là các RichTextBox. - Các điều khiển ―So sánh‖, ―Nối chuỗi‖, ―Chèn‖, ―Thêm chuỗi‖, ―Thay thế‖, ―Chuỗi hoa‖, ―Chuỗi thƣờng‖, ‖Thoát‖là các Button. 2. Lập trình cho các sự kiện: - Khi Load Form: + RichTextBox nhập A và B sáng cho phép nhập xâu ký tự. + Các điều khiển khác vô hiệu hóa (nút ―Thoát‖ luôn sáng, richTextBox kết quả luôn ẩn). - Khi nhập xâu vào richTextBox nhập A hoặc B thì các button sẽ sáng lên. - Khi kích vào nút ―So sánh‖: 191 Tập bài giảng Lập trình cơ bản + Kiểm tra xem đã nhập xâu hay chƣa? Nếu chƣa thì đƣa ra hộp thoại thông báo. + Thực hiện so sánh hai xâu theo thứ tự từ điển trong bảng mã ASCII. + Hiển thị kết quả ra richTextBox kết quả. - Khi kích vào nút ―Chèn‖: + Kiểm tra xem đã nhập xâu A và xâu B hay chƣa? Nếu chƣa nhập đủ thì đƣa ra hộp thoại thông báo. + Hiện lên cửa sổ cho phép nhập vào số nguyên dƣơng n. + Thực hiện nối xâu B vào vị trí thứ n của xâu A. + Hiển thị xâu kết quả ra richTextBox kết quả. - Khi kích vào nút ―Nối chuỗi‖: + Kiểm tra xem đã nhập xâu A và xâu B hay chƣa? Nếu chƣa nhập đủ thì đƣa ra hộp thoại thông báo. + Thực hiện nối xâu B vào cuối xâu A. + Hiển thị xâu kết quả ra richTextBox kết quả. - Khi kích vào nút ―Thay thế‖: + Kiểm tra xem đã nhập xâu A và xâu B hay chƣa? Nếu chƣa nhập đủ thì đƣa ra hộp thoại thông báo. + Thực hiện thay thế xâu A bằng xâu B. + Hiển thị xâu kết quả ra richTextBox xâu A. - Khi kích vào nút ―Xâu hoa‖: + Kiểm tra xem đã nhập xâu A và xâu B hay chƣa? Nếu chƣa nhập đủ thì đƣa ra hộp thoại thông báo. + Thực hiện chuyển xâu A và xâu B về xâu chứa toàn ký tự hoa. + Hiển thị xâu kết quả ra richTextBox xâu A và richTextBox xâu B. - Khi kích vào nút ―Thoát‖: thực hiện kết thúc chƣơng trình. Hướng dẫn thực hiện 1. Thiết kế Form như yêu cầu đề bài 2. Phân tích yêu cầu Theo yêu cầu của bài toán thì phải có một Form chứa: - Các đối tƣợng có nội dung ―CHƢƠNG TRÌNH XỬ LÝ CHUỖI‖, ―Nhập chuỗi A‖, ―Nhập chuỗi B‖ là các Label. - Đối tƣợng ô nhập xâu A, xâu B và kết quả là các RichTextBox. - Đối tƣợng nhập và kết quả là các GroupBox. - Các nút ―So sánh‖, ―Nối chuỗi‖, ― Chèn‖, ―Thay thế‖, ― Chuỗi hoa‖, ―Thoát‖ là các Button. 192 Tập bài giảng Lập trình cơ bản 3. Hướng dẫn thực hiện Nhƣ vậy, để thực hiện công việc thiết kế Form nhƣ yêu cầu bài toán, ngƣời lập trình thực hiện các bƣớc sau: Bƣớc 1. Mở C# Bƣớc 2. Tạo Form mới Trên thanh menu, chọn File/New/Project.Trên màn hình xuất hiện cửa sổ New Project, chọn ứng dụng Windows Form Appication, sau đó nhập tên của Project vào ô Name, kích vào Browse để chọn thƣ mục lƣu trữ Project, sau đó chọn OK. Bƣớc 3. Thiết kế Form theo mẫu và gắn các điều khiển Bƣớc 4. Kết quả thiết kế Form Hình 4.60: Kết quả thiết kế Form chương trình xử lý xâu Bƣớc 5. Viết mã lệnh cho các nút chức năng - Viết mã lệnh cho sự kiện Form Load private void Form1_Load(object sender, EventArgs e) { vohieuhoa(false); rtbox_A.ResetText(); rtbox_B.ResetText(); rtbox_A.Focus(); } - Viết mã lệnh cho hàm vô hiệu hóa các button void vohieuhoa(bool gt) { bt_chen.Enabled = gt; bt_chuoihoa.Enabled = gt; bt_noichuoi.Enabled = gt; bt_sosanh.Enabled = gt; bt_thaythe.Enabled = gt; } - Viết mã lệnh cho sự kiện TextChanged của richTextBox nhập xâu A 193 Tập bài giảng Lập trình cơ bản private void rtbox_A_TextChanged(object sender, EventArgs e) { vohieuhoa(true); } - Viết mã lệnh cho sự kiện TextChanged của richTextBox nhập xâu B private void rtbox_B_TextChanged(object sender, EventArgs e) { vohieuhoa(true); } - Viết mã lệnh cho sự kiện kích chuột vào nút so sánh private void bt_sosanh_Click(object sender, EventArgs e) { rtbox_ketqua.ResetText(); if (kiemtra(rtbox_A.Text) || kiemtra(rtbox_B.Text)) MessageBox.Show("Chưa nhập xâu", "Thông báo"); else if (string.Compare(rtbox_A.Text, rtbox_B.Text) == 0) rtbox_ketqua.Text = "Hai chuỗi giống nhau"; else if (string.Compare(rtbox_A.Text, rtbox_B.Text) <0) rtbox_ketqua.Text = "Chuỗi A nhỏ hơn chuỗi B"; else rtbox_ketqua.Text = "Chuỗi A lớn hơn chuỗi B"; } - Viết mã lệnh cho hàm kiểm tra chuỗi rỗng bool kiemtra(string st) { if (string.IsNullOrWhiteSpace(st)) return true; else return false; } - Viết mã lệnh cho sự kiện kích chuột vào nút nối chuỗi private void bt_noichuoi_Click(object sender, EventArgs e) { rtbox_ketqua.ResetText(); if (kiemtra(rtbox_A.Text) || kiemtra(rtbox_B.Text)) MessageBox.Show("Chưa nhập xâu", "Thông báo"); else { string st, st1, st2; st1 = rtbox_A.Text; st2 = rtbox_B.Text; st = string.Concat(st1, st2); rtbox_ketqua.Text = st; } } - Viết mã lệnh cho sự kiện kích chuột vào nút chèn private void bt_chen_Click(object sender, EventArgs e) 194 Tập bài giảng Lập trình cơ bản { bool kt; int n; rtbox_ketqua.ResetText(); if (kiemtra(rtbox_A.Text) || kiemtra(rtbox_B.Text)) MessageBox.Show("Chưa nhập xâu", "Thông báo"); else { string st, st1, st2; st1 = rtbox_A.Text; st2 = rtbox_B.Text; do { kt = int.TryParse(Microsoft.VisualBasic.Interaction.InputBox("Nhập vị trí cần bổ sung n = "), out n); } while (!kt || n st1.Length); st = st1.Insert(n, st2); rtbox_ketqua.Text = st; } } - Viết mã lệnh cho sự kiện kích chuột vào nút thay thế private void bt_thaythe_Click(object sender, EventArgs e) { if (kiemtra(rtbox_A.Text))MessageBox.Show("Chưa nhập xâu", "Thông báo"); else { string xau_can_thay = Microsoft.VisualBasic.Interaction.InputBox("Nhập xâu cần thay thế", "Nhập xâu", "", 100, 100); string xau_thay_the = Microsoft.VisualBasic.Interaction.InputBox("Nhập xâu thay thế", "Nhập xâu", "", 100, 100); st1 = st1.Replace(xau_can_thay, xau_thay_the); rtbox_A.Text = st1; } } - Viết mã lệnh cho sự kiện kích chuột vào nút chuỗi hoa private void bt_chuoihoa_Click(object sender, EventArgs e) { rtbox_ketqua.ResetText(); if (kiemtra(rtbox_A.Text) || kiemtra(rtbox_B.Text)) MessageBox.Show("Chưa nhập xâu", "Thông báo"); else { 195 Tập bài giảng Lập trình cơ bản string st1, st2; st1 = rtbox_A.Text; st2 = rtbox_B.Text; st1 = st1.ToUpper(); st2 = st2.ToUpper(); rtbox_A.Text = st1; rtbox_B.Text = st2; } } - Viết mã lệnh cho sự kiện kích chuột vào nút thoát private void bt_Thoat_Click(object sender, EventArgs e) { this.Close(); } Bƣớc 6. Kết quả chạy chƣơng trình Hình 4.61: Kết quả chạy chương trình xử lý xâu Bài 4.14 Lập chƣơng trình thực hiện các yêu cầu sau: 1. Thiết kế Form nhƣ hình sau Hình 4.62: Chuẩn hóa và đếm từ trong xâu 196 Tập bài giảng Lập trình cơ bản Yêu cầu: - Nhãn chuẩn hóa và đếm từ trong xâu: Font Time New Roman, chữ hoa, in đậm, cỡ chữ 16, căn giữa Form. - GroupBox nhập xâu và kết quả: Font Time New Roman, cỡ chữ 14 - Điều khiển để nhập xâu và hiển thị kết quả là các RichTextBox và đƣợc đặt trong các GroupBox tƣơng ứng. - Nhãn đếm từ: Font Time New Roman, cỡ chữ 14. - Các điều khiển ―Chuẩn hóa‖, ―Đếm từ‖, ―Thoát là các Button. 2. Lập trình cho các nút sự kiện: - Khi Load Form: + richTextBox nhập xâu sáng lên cho phép nhập xâu. + Các điều khiển khác vô hiệu hóa (nút ―Thoát‖ luôn sáng). - Nút ―Chuẩn hóa‖ sáng lên khi nhập ở richTextBox nhập xâu. - Khi kích vào nút ―Chuẩn hóa‖ thì: + RichTextBox nhập xâu vô hiệu hóa. + Thực hiện chuẩn hóa xâu và đƣa kết quả ra richTextBox kết quả + Nút ―Đếm từ‖ sáng lên đồng thời lúc này nút ―Chuẩn hóa‖ vô hiệu hóa. - Khi kích vào nút ―Đếm từ‖ thì: + Thực hiện đếm từ của xâu đã chuẩn hóa. + Hiển thị kết quả ra nhãn đếm từ. TAI LIỆU THAM KHẢO [1] Phạm Hữu Khang, Đoàn Thiện Ngân. C# 2005 - Lập trình cơ bản. Nhà xuất bản Lao động xã hội. 2006. [2] Phạm Hữu Khang, Đoàn Thiện Ngân. C# 2005 - Lập trình Windows Forms. Nhà xuất bản Lao động xã hội. 2006. [3] Microsoft .net (C#), Trung tâm đào tạo CNTT chất lƣợng cao, cổng cntt Việt Nam. www.itgatevn.com.vn [4] Programming C#, Jesse Liberty, O‘Reilly. [5] Hƣớng dẫn thực hành lâp trình cơ bản, Đại học Công nghệ Đồng Nai [6] Windows Forms Programming with C#, Erik Brown, Manning. 197 Tập bài giảng Lập trình cơ bản [7] 198
File đính kèm:
- giao_trinh_lap_trinh_co_ban_phan_2.pdf