Bài giảng Lập trình cơ bản: Phần 2 - ĐH Sư phạm kỹ thuật Nam Định

83 8 0
Bài giảng Lập trình cơ bản: Phần 2 - ĐH Sư phạm kỹ thuật Nam Định

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tiếp nội dung phần 1, Bài giảng Lập trình cơ bản: Phần 2 cung cấp cho người học những kiến thức như: Giới thiệu về lập trình trên Form; Làm việc với Form; Một số điều khiển thông dụng; Một số điều khiển đặc biệt;...Mời các bạn cùng tham khảo để nắm chi tiết nội dung giáo trình!

Tập giảng Lập trình CHƢƠNG 4: LẬP TRÌNH TRÊN FORM Trong chƣơng này, giới thiệu cách xây dựng ứng dụng Windows Forms cách sử dụng điều khiển thông dụngtrong ứng dụng GUI Đồng thời hƣớng dẫn cách thiết lập thuộc tính Windows Forms điều khiển cách sử dụng thiết kế trực quan cửa sổ Properties thay đổi kiểm tra giá trị thuộc tính tự động cách sử dụng mã lệnh C# 4.1 Giới thiệu lập trình Form Trƣớc NET, nhà phát triển có vài chọn lựa việc xây dựng ứng dụng Windows Họ xây dựng ứng dụng C hay C++ sử dụng Win32 API Việc công việc khó chi phối thời gian Tiếp đến sử dụng Microsoft Foundation Classes (MFC) thƣ viện lớp sử dụng C++ đƣợc gói gọn Win32 API để xây dựng úng dụng Windows Visual Basic công cụ phát triển mạnh cho phép tạo ứng ụng Windows tƣơng đối nhanh chóng Tuy nhiên, giải pháp không sử dụng NET Framework hay CLR .NET Framework chứa tầng lớp tiện ích dựa Win32 API giống nhƣ MFC Visual Basic, cho phép phát triển ứng dụng Windows hiệu suất cao dễ dàng Môi trƣờng đƣợc gọi Windows Forms, cho phép lập trình viên tạo racác ứng dụng Windows tƣơng tác tốt lớn sử dụng ngôn ngữ NET 4.2 Làm việc với Form 4.2.1 Một số khái niệm Windows Forms tập hợp thƣ viện lớpđƣợc quản lý NET Framework để phát triển ứng dụng desktop máy tính Trong Windows Forms, Form cửa sổ giao diện cho phép hiển thị thông tin tƣơng tác với ngƣời dùng 116 Tập giảng Lập trình Các ứng dụng Windows Forms thƣờng đƣợc xây dựng cách thêm điều khiển vào Form xây dựng kiện tƣơng ứng với hành động ngƣời dùng, chẳng hạn nhƣ kích chuột hay bấm phím Một điều khiển (control) thành phần có giao diện riêng (User Interface) hiển thị liệu nhận liệu vào Để xây dựng ứng dụng Windows Forms, sử dụng nhiều đối tƣợng lớp thuộc không gian tên khác (namespace), nhiên có khơng tên quan trọng khơng thể thiếu ứng dụng Windows Forms System.Windows.Forms System.Windows.Forms chứa lớp dùng để tạo ứng dụng Windows với giao diện ngƣời sử dụng mang đặc điểm ƣu việt có hệ điều hành Windows Ví dụ 4.1 sau tạo ứng dụng Windows Form nhƣ mẫu sau: Hình 4.1: Giao diện ví dụ 4.1 u cầu: - Đặt dịng tiêu đề Form Ví dụ 4_1 - Hiển thị dịng chữ Xin chào Form -Khi kích chuột vào nút ―Thốt‖: Thực đóng Form Hướng dẫn thực hiện: Bƣớc 1: Tạo ứng dụng Windows Forms Application: Mở Visual Studio 2010 vào File|New|Project thực thiết lập theo hình 4.2 117 Tập giảng Lập trình Hình 4.2: Các bước tạo ứng dụng Windows Forms Application Sau click ―Ok‖, Visual Stuidio 2010 có giao diện nhƣ hình 4.3: Hình 4.3: Giao diện ứng dụng Windows Forms Application sau tạo Khi làm việc với ứng dụng Windows Form, số cửa sổ thƣờng xuyên sử dụng, nhƣ hình 4.3, giao diện Form1 vừa tạo (Form1.cs[Design]), nơi đƣợc dùng để thiết kế giao diện ứng dụng, chứa điều khiển đƣợc thêm vào, bên trái cửa số Toolbox nơi chứa điều khiển cho phép kéo thả vào Form 118 Tập giảng Lập trình Hình 4.4: Cửa sổ Toolbox Bên phải cửa sổ Cửa sổSolutionExplorer:Hiển thị Project Solution, hiển thị tất tệp Project Project với tên đƣợc tô đậmsẽ đƣợc chạy Hình 4.5: Cửa sổ Solution Explorer Chú ý: Nếu cửa sổ khơng xuất vào View để mở lại cửa sổ Bƣớc 2: Thay đổi tiêu đề cho Form Để thay đổi tiêu đề Form, chọn Form1 cửa sổ Form1.cs[Design] mở cửa sổ Properties để thay đổi thuộc tính Text Form1 119 Tập giảng Lập trình Hình 4.6: Cửa sổ Properties Form1 Nếu cửa sổ Properties không xuất chọn Form1 nhấn phím F4 Bƣớc 3: Hiển thị dòng chữ ―Xin chào‖ Form1 - Mở cửa sổ Toolbox, tìm tới điều khiển Label nhƣ hình 4.7: , giữ chuột kéo vào Form1 Hình 4.7: Thêm điều khiển Label vào Form1 - Chọn điều khiển label1 Form1, mở cửa sổ Properties điều khiển label1 sửa thuộc tính tính Text ban đầu ―label1‖ thành ―Xin chào!‖ 120 Tập giảng Lập trình Hình 4.8: Thay đổi thuộc tính Text điều khiển label1 Kết quả: - Hình 4.9: Kết sau thay đổi thuộc tính Text điều khiển label1 Tiếp theo thay đổi Font chữ cho điều khiển label1 Mở cửa sổ Properties điều khiển label1, chọn thuộc tính Font, kích chuột vào biểu tƣợng sổ Font nhƣ hình 4.10 - xuất Hình 4.10: Cửa sổ Font Thực thay đổi sau: Font: Time New Roman 121 Tập giảng Lập trình Size: 16 Font style: True - Sau thay đổi màu chữ cách thiết lập thuộc tính ForeColor: Blue Kết quả: Hình 4.11: Thay đổi Font màu chữ điều khiển label1 Bƣớc 4: Thêm nút ―Thoát‖ viết mã lệnh cho kiệnKích chuộtcủa nút ―Thốt‖ - Thêm điều khiển Button từ Toolbox vào Form1, thực thiết lập thuộc tính chon button1 nhƣ sau: Name:btThoat Text: Thoát - Trên cửa sổ Properties nút ―Thoát‖, chọn biểu tƣợng để mở danh sách kiện (event) đối tƣợng lớp Button nhƣ hình 4.12, chọn kiện Click double click vào kiện này, xuất file Forms.cs phƣơng thức đƣợc sinh tƣơng ứng với kiện Click nút (btThoat_Click) nhƣ hình 4.13 122 Tập giảng Lập trình Hình 4.12: Chọn kiện Click - Hình 4.13: Phương thức btThoat_Click Viết mã lệnh cho kiện Kích chuộtcủa nút ―Thốt‖ private void btThoat_Click(object sender, EventArgs e) { this.Close();//Phương thức dùng để đóng Form } Bƣớc 5: Ấn phím F5 để chạy thử chƣơng trình đƣợc kết nhƣ hình 4.1 4.2.2 Các loại Form Form có ba loại Form dạnh Multiple Document Interface (MDI) đƣợc gọi MDI Form (Form cha) cho phép trình bày Form (Child Form hay Form con)khác bên Những Form mở không nằm MDI Form gọi Normal Form MDI Form Một Form đƣợc gọi MDI Form thuộc tính IsMdiContainer có giá trị True Khi chuyển thuộc tính IsMdiContainer Form từ False sang True, màu Form đổi thành màu xám nhƣ hình 4.14 Hình 4.14: Màu MDI Form Ví dụ 4.2: Thiết lập thuộc tính IsMdiContainer //Tạo Form frm cho frm MDI Form 123 Tập giảng Lập trình Form frm = newForm1(); frm.IsMdiContainer = true; frm.Show();//Hiển thị Form Child Form Child Form Form nạp lên nằm MDI Form Để Form trở thành Child Form khai báo thuộc tính MdiParent tƣơng ứng với MDI Form Ví dụ 4.3: Khai báo để mở Child Form có tên frm lớp Form3 Form frm = new Form3(); frm.MdiParent = this;//this thể Form gọi đến Form Frm MDI Form frm.Show();//Hiển thị Form Normal Form Normal Form Form MDI Form Child Form 4.2.3 Thuộc tính Form Những thuộc tính chung Windows Form đƣợc liệt kê bảng sau: Thuộc tính Mơ tả Name Là thuộc tính để xác định tên Form, mặc định, thuộc tính Name Form ứng dụng Form1 Backcolor Thuộc tính xác định màu Form BackgroundImage Thuộc tính xác định hình cho Form Font Thuộc tính xác định kiểu, kích thƣớc loại font đƣợc hiển thị Form điều khiển Form Size Kích thƣớc Form bao gồm: Width Height Start Position Thuộc tính xác định vị trị mặc định xuất Form hình máy tính ngƣời sử dụng, có thuộc tính sau: - Manual - vị trí kích thƣớc Form phụ thuộc vào vị trí xuất - CenterScreen - xuất hình - WindowsDefaultLocation - Form xuất vị trí mặc định Windows theo kích thƣớc Form - Windows DefaultBounds - Form đƣợc hiển thị vị trí mặc định Windows chiều chúng phụ thuộc vào hệ điều hành Windows - Center Parent - Form đƣợc mở nhƣ cửa sổ Form khác xuất vị trí so với Form cha Text Xác định tiêu đề Form 124 Tập giảng Lập trình Xác định trạng thái xuất Form: Normal, Maximized, WindowState hay Minimized Bảng 4.1: Một số thuộc tính Form Ví dụ 4.4: Tạo Form thực thay đổi số thuộc tính Form nhƣ sau: Name: frm4_4 Text: Ví dụ 4_4 Size: 500, 500 BackColor:Red WindowState: Maximized Kết Form hiển thị nhƣ hình 4.15 Hình 4.15: Form sau thay đổi số thuộc tính theo ví dụ 4.4 4.2.4 Sự kiện Form Những kiện Windows Form đƣợc liệt kê nhƣ bảng sau: Sự kiện Mô tả Click Sự kiện xảy click vào nơi Form Closed Sự kiện xảy Form đƣợc đóng lại Deactivate Sự kiện xảy Formbị trạng thái sử dụng Load Sự kiện xảy Formđƣợc tải nhớ cho lần MouseMove Sự kiện xuất chuột đƣợc rê Form MouseDown Sự kiện xảy chuột đƣợc nhấn Form MouseUp Sự kiện xảy chuột đƣợc thả Form Resize Sự kiện xảy thay đổi kích thƣớc Form Closing Sự kiện xảy đóng Form Bảng 4.2: Một số kiện Form 4.2.5 Phƣơng thức Form Phƣơng thức Mơ tả 125 Tập giảng Lập trình Hình 4.56: Bài tập mảng hai chiều Yêu cầu: - Nhãn tập mảng hai chiều: Font Time New Roman, chữ hoa, in đậm, cỡ chữ 14, Form - Nhãn nhập số hàng, nhập số cột, nhập giá trị: Font Time New Roman, chữ thƣờng, cỡ chữ 11 - Điều khiển để nhập số nguyên dƣơng n, m nhập giá trị phần tử ma trận Textbox - Điều khiển để hiển thị ma trận kết RichTextBox - Các điều khiển ―Tìm giá trị lớn nhất‖, ―Tính tổng số lẻ‖, ―Đếm số chia hết cho 7‖, ― Tính tổng hàng‖, ― Liệt kê số nguyên tố‖, ―Thoát‖là Button - Đối tƣợng ―Ma trận vừa nhập‖, ―Kết quả‖ cá GroupBox Lập trình thực cơng việc: - Khi Load Form: + Textbox tƣơng ứng với nhãn nhập số hàng để trống, sáng lên trỏ đặt + Textbox tƣơng ứng vỡi nhãn nhập số cột, nhập giá trị, nút ―Tìm giá trị lớn nhất‖, ―Tính tổng số lẻ‖, ―Đếm số chia hết cho 7‖, ― Tính tổng hàng‖, ― Liệt kê số nguyên tố‖, đối tƣơng GroupBox Ma trận vừa nhập kết vô hiệu hóa - Khi nhập giá trị vào textbox tƣơng ứng với nhãn nhập số hàng nhấn phím Enter thực kiểm tra xem liệu nhập vào có hợp lệ hay khơng? (giá trị nhập vào phải số ngun dƣơng) Nếu khơng hợp lệ lên hộp thoại thông báo yêu cầu nhập lại Ngƣợc lại textbox tƣơng ứng với nhãn nhập số cột sáng lên, để trống trỏ đặt 184 Tập giảng Lập trình - Khi nhập giá trị vào textbox tƣơng ứng với nhãn nhập số cột nhấn phím Enter thực kiểm tra xem liệu nhập vào có hợp lệ hay không? (giá trị nhập vào phải số ngun dƣơng) Nếu khơng hợp lệ lên hộp thoại thông báo yêu cầu nhập lại Ngƣợc lại textbox tƣơng ứng với nhãn nhập giá trị sáng lên, để trống trỏ đặt - Khi nhập giá trị vào textbox tƣơng ứng với nhãn nhập giá trị nhấn phím Enter hiển thị giá trị richtextbox Group Ma trận vừa nhập, sau textbox để trống trỏ lại đặt để nhập giá trị Lặp lại trình nhập xong giá trị cho phần tử ma trận đƣa thơng báo nhập xong ma trận đồng thời nút ―Tìm giá trị lớn nhất‖, ―Tính tổng số lẻ‖, ―Đếm số chia hết cho 7‖, ― Tính tổng hàng‖, ― Liệt kê số nguyên tố‖ sáng lên cho phép hoạt động, textbox tƣơng ứng với nhập số hàng, nhập số cột, nhập giá trị vơ hiệu hóa - Khi kích vào nút ― Tìm giá trị lớn nhất‖: thực tìm giá trị lớn ma trận hiển thị kết richtextbox Groupbox kết - Khi kích vào nút ― Tổng số lẻ‖: thực tính tổng phần tử có giá trị lẻ ma trận hiển thị kết richtextbox Groupbox kết - Khi kích vào nút ― Đếm số chia hết cho 7‖: thực đếm phần tử có giá trị chia hết cho ma trận hiển thị kết richtextbox Groupbox kết - Khi kích vào nút ― Tính tổng hàng‖: thực tính tổng phần tử hàng ma trận hiển thị kết richtextbox Groupbox kết - Khi kích vào nút ― Liệt kê số nguyên tố‖: Hiển thị richtextbox Groupbox số nguyên tố có ma trận - Khi kích vào nút ― Thốt‖: thực dừng chƣơng trình Hướng dẫn thực Thiết kế Form yêu cầu đề Phân tích u cầu Theo u cầu tốn phải có Form chứa: - Các đối tƣợng có nội dung ―BÀI TẬP VỀ MẢNG HAI CHIỀU‖,‖Nhập số hàng‖, ―Nhập số cột‖, ‖Nhập giá trị‖ Label - Đối tƣợng ô để nhập số hàng, nhập số cột nhập giá trị Textbox - Đối tƣợng ma trận vừa nhập, kết GroupBox - Điều khiển để hiển thị ma trận vừa nhập kết Richtextbox 185 Tập giảng Lập trình - Các nút ―Tìm giá trị lớn nhất‖, ―Tính tổng số lẻ‖, ―Đếm số chia hết cho 7‖, ― Tính tổng hàng‖, ― Liệt kê số nguyên tố‖, ―Thoát‖là Button Hướng dẫn thực Nhƣ vậy, để thực công việc thiết kế Form nhƣ yêu cầu tốn, ngƣời lập trình thực bƣớc sau: Bƣớc Mở C# Bƣớc Tạo Form Trên menu, chọn File/New/Project.Trên hình xuất cửa sổ New Project, chọn ứng dụng Windows Form Appication, sau nhập tên Project vào Name, kích vào Browse để chọn thƣ mục lƣu trữ Project, sau chọn OK Bƣớc Thiết kế Form theo mẫu gắn điều khiển Bƣớc Kết thiết kế Form Hình 4.57: Kết thiết kế Form tập mẫu mảng hai chiều Bƣớc Viết mã lệnh cho kiện - Viết mã lệnh khai báo ma trận biến int[,] A= new int [100,100]; int n, m, spt=0, i=0,j=0; - Viết mã lệnh cho 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 điều khiển Load Form private void vohieuhoa(bool gt) { txt_m.Enabled = gt; txt_giatri.Enabled = gt; 186 Tập giảng Lập trình 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 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 kiện KeyUp 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 n"); txt_n.Focus(); vohieuhoa(false); } } } - Viết mã lệnh cho kiện KeyUp 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 giảng Lập trình { txt_giatri.Enabled = true; txt_giatri.TabIndex = 1; txt_giatri.Focus(); } else { txt_giatri.TabIndex MessageBox.Show("Bạn = 1; chưa txt_m.Focus(); nhập m"); vohieuhoa(false); txt_m.Enabled = true; } } } - Viết mã lệnh cho kiện KeyUp 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 nút sau 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 kiện kích chuột vào nút tìm giá trị lớn 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 ma trận là:" + max.ToString(); } 188 Tập giảng Lập trình - Viết mã lệnh cho kiện kích chuột vào nút tính tổng 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] % != 0) s += A[i, j]; rtbox_ketqua.Text = "Tổng số lẻ ma trận là: " + s.ToString(); } - Viết mã lệnh cho kiện kích chuột vào nút đếm số chia hết cho 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 7"; } - Viết mã lệnh cho kiện kích chuột vào nút tính 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 kiện kích chuột vào nút tính liệt kê số nguyên tố private void bt_lietkeSNT_Click(object sender, EventArgs e) { rtbox_ketqua.Text=" Các số nguyên tố ma trận là: "; int d = 0; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if j].ToString() + " (kt_SNT(A[i, j])) { rtbox_ketqua.Text += A[i, "; d++; } if (d == 0) rtbox_ketqua.Text = "Ma trận khơng có số 189 Tập giảng Lập trình 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

Ngày đăng: 08/06/2021, 14:19

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan