Bài tập C++ .NET FRAMEWORK
Chương 1: Tổng quan NET FRAMEWORK Thành phần net FrameWork Operatio Appli FCL n system CLR Hình 1-1 Kiến trúc khung ứng dụng Net CLR: Common Language Runtime Quản lý code thực thi chương trình, quản lý tiến trình, quản lý nhớ, cung cấp dịch vụ biên dịch, tích hợp tác vụ truy cập từ xa FCL: Framework Class Library Bao gồm dịch vụ giao tiếp người sử dụng, điều khiển, truy cập liệu, cung cấp lớp giao tiếp, điều khiển giá trị, phương thức truy cập chức hẹ thống, XML, bảo mật,… Ứng dụng dùng C# Visual C# ngơn ngữ lập trình thiết kế để phát triển ứng dụng chạy net Framework C# ngơn ngữ lập trình mạnh, đơn giản, kiểu an tồn hướng đối tượng, gần giống ngơn ngữ C - xây dựng ứng dụng window Form - Có thể làm việc mơi trường console application hình bàn phím - Xây dựng thư viện (class library) - Có thể xây dựng điều khiển người dùng định nghĩa (custom control) - Xây dựng ứng dụng báo cáo (Crystal report) - Xây dựng ứng dụng SQL Server - ứng dụng PDA mobile: xây dựng ứng dụng cho thiết bị cầm tay hay máy kỹ thuật số hệ thống cá nhân (smart device) - đóng gói triển khai - tạo solution: dung để quản lý nhiều project Cấu trúc chương trình C# using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { } } } Chương 2: FORM VÀ CÁC ĐỊNH DẠNH TRÊN FORM Các loại form (mdi form, child form, normal form) 1.1 MDI form Form gọi mdi form thuộc tính isMdiContainer có giá trị true private void button1_Click(object sender, EventArgs e) { Form frm = new Form2(); frm.IsMdiContainer = true; frm.Show(); } Child form Child form form mà nạp lên nằm bên vùng làm việc Mdi form Để form trở thành child form phải khai báo thuộc tính MdiParent ứng với Mdiform 1.2 private void button2_Click(object sender, EventArgs e) { Form frm = new Form3(); frm.MdiParent = this; frm.Show(); } Vì Child Form nạp lên hình, kích thước khơng gian làm việc phụ thuộc vào MDI form Ngồi thêm MDI form từ template có sẵn 1.3 Normal form Form mở khơng phải mdi form child form mormal form Các thuộc tính form 2.1 Nhóm thuộc tính nhận dạng - Name: dùng để nhận dạng form, project có nhiều form, form phải có tên riêng khác - Text: dùng để trình bày chuỗi tiêu đề - ShowIcon: nạp lên hình có biểu tượng mặc định góc bên trái hình - Opacity: cho phép làm suốt bề mặt form để nhìn biểu tượng hình desktop 2.2 Nhóm thuộc tính nhận dạng - Backcolor: chọn màu - ForeColor: dùng để định dạng màu mặc định cho chuỗi Control Form - StartPosition: định vị trí hiển thị form hình - WindowState: có trạng thái: normal, minimized, maximized - IsMdiContainer: có hai giá trị: true, false Nếu false normal form - ControlBox: tồn form, trừ ko muốn chúng xuất Khi nhấn vào biểu tượng x góc bên phải form đóng lại Nếu khơng sử dụng biểu tượng khai báo giá trị thuộc tính false 2.3 Nhóm thuộc tính thực đơn Gồm thuộc tính MainMenuStrip ứng với control MenuStrip ContextMenuStrip ứng với ContexMenuStrip Nếu thêm control MainMenuStrip vào Form thuộc tính tự động gán giá trị tên MainMenuStrip vừa thêm vào 2.4 Nhóm thuộc tính thị Hai thuộc tính dùng để thực chức thị với điều khiển button AcceptButton CancelButton Ví dụ: form đăng nhập hệ thống, người sử dụng nhấn fím Enter thay nhấn OK, nhấn nút Esc thay click nút Cancel Để làm điều ta khai báo nút lệnh btnOK btnCancel cần đặt thuộc tính AcceptButton btnOK CancelButtton btnCancel private void btnOk_Click(object sender, EventArgs e) { if (textBox1.Text == "") { MessageBox.Show(" Nhập Username:"); textBox1.Focus(); } else if (textBox2.Text == "") { MessageBox.Show(" Nhập Password:"); textBox2.Focus(); } } private void btnCancel_Click(object sender, EventArgs e) { Application.Exit(); } 3.Sự kiện form Danh sách biến cố: Biến cố FormClosed: xảy form đóng - Biến cố FormClosing: xảy form đóng Ví dụ: - private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("bạn có chắn muốn đóng form khơng?", "Thơng báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton Button1 )==DialogResult Cancel ) e.Cancel = true; } Biến cố Click: xảy người dùng nhấn chuột vùng làm việc form - Biến cố Activated: xảy form kích hoạt mã hay tác động người sử dụng - Biến cố Load: Xảy form hiển thị lần - Biến cố KeyPress: xảy phím nhấn Ví dụ: - private void Form2_KeyPress(object sender, KeyPressEventArgs e) { //label1.Text = "Press by key: "; //while (e.KeyChar.ToString ()!="") label1.Text = label1.Text + e.KeyChar.ToString(); } Phương thức - Close: dùng để đóng form - Hide: dùng để che giấu form mở - Activate: dùng để kích hoạt form Nếu MDIform có nhiều Child Form mở bạn kích hoạt chúng cách sử dụng phương thức - Show: cho phép nạp form lên hình Chương 3: Các điều khiển thông thường Bao gồm: Label, Textbox, ComboBox, ListBox, CheckBox, RadioButton, Button Tất điều khiển có thuộc tính chung: - BackColor: màu điều khiển - ForeColor: Màu chữ điều khiển - Text: Chuỗi trình bày điều khiển - Visible: Thuộc tính che giấu hay hiển thị điều khiển - Name: Tên điều khiển - Locked: Khóa khơng cho di chuyển, hoạt động form Các biến cố chung thường gặp: - Click: xảy người dùng nhấn chuột - MouseMove: xảy người sử dụng di chuột qua vùng làm việc điều khiển - MouseUp: Xảy người sử dụng nhấn chuột xuống vùng làm việc điều khiển nhả - MouseDown: Xảy người sử dụng nhấn chuột xuống vùng làm việc điểu khiển - Move: xảy di chuyển điều khiển Bài tập nhà: Bài 1: Thiết kế form viết chương trình calculator window Bài 2: Thiết kế viết chương trình giải phương trình bậc ẩn ax+b=0 Input: a, b Output: x Cách giải: Xét a=0 Nếu b=0 pt vơ số nghiệm Nếu b0 pt vơ nghiệm Nếu a0 pt có nghiệm nhât x=-b/a; MessageBox.show(noi_dung_thong_bao, tieu_de,MessageboxButtons, MessageBoxIcon, MessageBoxDefaultButton); Bài tập 3: Thiết kế viết chương trình cho form đăng nhập Lable, textbox, button Radiobutton, checkbox Combobox, listbox 3.1 Combobox Các thuộc tính: - Flatstyle: kiểu đường viền điều khiển - DataSource: Tập dl điền vào điều khiển - DropDownStyle: Kiểu trình bày danh sách phần tử, mặc định DropDown (cho phép thêm chuỗi), DropDownList (chỉ cho phép chọn danh sách), simple (dạng danh sách) - Items: tập phần tử có điều khiển - MaxDropDownItems: số phân tử lớn - MaxLength: số kí tự lớn cho phép nhập - Text: Chuỗi ứng với nhãn đg chọn - SelectedText: Lấy giá trị chuỗi ứng với nhãn đg chọn - SelectedItem: Lấy phần tử Object ứng với nhãn dg chọn - SelectedValue: Lấy giá trị ứng với ptử kiểu Object đg chọn - SelectedIndex: Lấy giá trị mục ứng với ptử đg chọn Các biến cố: - MouseClick: xảy người dùng click chuột lên điều khiển MouseDoubleClick: xảy người dùng click hai lần liên tiếp lên điều khiển - SelectedIndexChanged: xảy mục phần tử thay đổi - SelectedValueChanged: xảy giá trị phần tử thay đổi - SelectionChangeCommited: xảy người sử dụng kết thúc trình chọn phần tử điều khiển - Textchanged: xảy chuỗi điều khiển thay đổi - EnabledChanged: xảy thuộc tính Enabled thay đổi giá trị từ true sang false ngược lại - … Phương thức: - Add (thêm phần tử vào Combo box) - Addrange(thêm số ptử vào combo box) 3.2 Listbox Listbox cho phép chọn nhiều phần tử lúc Hầu thuộc tính phương thức, biến cố combobox có listbox Thuộc tính: - selectionMode: cho phép chọn hay nhiều phần tử lúc - Sorted: =true danh sách đc tăng dần - selectedItems: - Bài tập Thiết kế viết chương trình sau: Sau viết chương trình xử lý kiện (biến cố) -Khi click vào button “Thêm” hiển thị lên hộp thoại thơng báo “ có lưu liệu khơng?”, click vào nút “yes” liệu nhập phần thơng tin thêm vào danh sách sinh viên , click vào nút “no” khơng them vào danh sách - KHi click vào nút “xóa ” xuất hộp thoại hỏi “có muốn xóa sinh viên khơng?”, click vào nút “Ok” sinh viên chọn danh sách bị xóa - Khi click vào nút chương trình đóng Chương 4: Điều khiển đặc biệt Chương tiếp tục tìm hiểu số điều khiển đặc biệt khác như: tooltip, HelpProvider, ErrorProvider, ProgressBar, ListView, TreeView, DatatimePicker, monthCalendar Điều khiển tooltip - Thuộc tính: + Backcolor: màu cửa sổ tooltip + AutomaticDelay: Thời gian tính phần ngàn giây + IsBalloon: mặc định thuộc tính false, ứng với cửa sổ bật lên hình chữ nhật Nếu giá trị true cửa sổ bật lên hình chữ nhật góc trịn + AutoPopDelay: Thời gian tính phần ngàn giây mà cửa sổ điều khiển tooltip xuất kết thúc người sử dụng rê chuột vào điều khiển + InitialDelay: Thời gian tính phần ngàn giây mà cửa sổ điều khiển tooltip xuất từ người sử dụng rê chuột vào điều khiển tooltip + ReshowDelay: Thời gian tính phần ngàn giây mà cửa sổ điều khiển tooltip tắt từ người sử dụng rê chuột khỏi điều khiển + toolTipIcon: Biểu tượng xuất bên cạnh chuỗi khai báo thuộc tính ToolTipTitle + ToolTipTitle: Chuỗi xuất bên cạnh biểu tượng - Phương thức: + SetTooltip: Khai báo chuỗi cho điều khiển tương tự thuộc tính Tooltip on toolTip1 + GetToolTip: Nhận chuỗi trả từ thuộc tính tooltip on tooltip1 +clear: Loại bỏ tất tooltipText cho điều khiển form Các bước: - gọi điều khiển tooltip - Điều chỉnh thuộc tính đối tượng tooltip - Chọn đối tượng (điều khiển_ control) cần giải thích Ví dụ cần giải thích cho textbox, chọn textbox cần giải thích, => truy cập vào thuộc tính tooltip on tooltip1=> nhập chuỗi cần giải thích Error Provider Điều khiển dùng để cung cấp giao tiếp với người sử dụng thông tin lỗi điều khiển form Tương tự tooltip bạn thêm vào điều khiển error Provider vào form để áp dụng cho điều khiển form - Thuộc tính: + Icon: biểu tượng xuất bên cạnh + BlinkRate: Thời gian tính phần ngàn giây áp dụng cho khoảng cách hai lần nhấp nháy + IsBalloon: giống tooltip +BlinkStyle:Kiểu nhấp nháy có lỗi xảy - Phương thức: + SetError: Khai báo chuỗi cho điều khiển tương tự thuộc tính error on error Provider; +Geterror: Nhận chuỗi từ thuộc tính error on error provider + Clear: xóa điều khiển errorprovider Các bước; - Gọi điều khiển errorProvider - Viết lệnh kiểm tra liệu Nếu có lỗi gọi errorProvider cách gọi phương thức SetError Điều khiển HelpProvider Cung cấp cửa sổ trợ giúp cho điều khiển Mỗi đối tượng HelpProvider cung cấp tập tham chiếu đến điều khiển mà bạn định -Thuộc tính: + HelpNamespace: định tên tập tin trợ giúp định dạng chm hay html chứa nội dung trợ giúp trực tuyến Thao tác: - Thêm điều khiển HelpProvider vào form Khi them vào form số thuộc tính xuất như: HelpKeyword on helpProvider, helpNavigator on helpProvider, helpString on helpProvider showhelp on helpProvider vào tất các điều khiển - Ví dụ: chọn điều khiển textbox3 Chọn thuộc tính HelpString on helpProvider1 cho phép bạn hiển thị chuỗi tooltip click vào biểu tượng “?” góc form - Để xuất biểu tượng “?” form ta đặt giá trị thuộc tính maximizeBox minimizeBox form false, sau đặt lại giá trị thuộc tính HelpButton true - Nếu người sử dụng nhấn phím F1 cửa sổ tiện ích xuất ta khai báo thuộc tính HelpNamespace - Sau chọn textbox2, truy cập vào thuộc tính HelpNavigator on helpProvider1 chọn Index Và thuộc tính HelpKeyword on helpProvider1 chọn chuỗi password - Sau chạy chương trình đưa chọn trỏ vào textbox2 nhấn phím F1 Điều khiển Progressbar Trình bày thời lượng thực -Thuộc tính: + Maximum: giới hạn điều khiển + Minimum: Giới hạn điều khiển + Value: Giá trị xử lý điều khiển + Style: kiểu trình bày điều khiển + Step: Giá trị ứng với lần nhảy xử lý điều khiển //Using System.IO; private void button1_Click(object sender, EventArgs e) {//Tạo lập đối tượng DirectoryInfo dir = new DirectoryInfo("D:\\Setup"); // gán thuộc tính maximum progressBar this.progressBar1.Maximum = dir.GetDirectories().Length; int i = 0; j = 0; foreach (DirectoryInfo f in dir.GetDirectories()) { i++; this.progressBar1.Value = i; this.label1.Text = f.Name; readfile(f.FullName );//do nguoi dung dinh //nghĩa } this.label1.Text = "Complete"; this.label2.Text = i.ToString() + j.ToString() + "file"; } void readfile(string Foldername) { DirectoryInfo dir = new DirectoryInfo(Foldername); foreach (FileInfo f in dir.GetFiles("*.*")) { j++; this.label2.Text = f.Name; Application.DoEvents(); } } } Listview - Dùng để trình bày phần tử dạng danh sách với nhiều hình dạng khác - Các thuộc tính: + AllowColumnReorder: cho phép xếp cột điều khiển Listview chế độ thi hành (giá trị mặc định false) + CheckBoxes: Xuất checkbox bên cạnh phần tử điều khiển listview + Columns: khai báo số cột (có header) điều khiển listview + FullRowsSelect: True cho phép tô màu ứng với hàng phần tử chọn + Group: Khai báo nhóm để phân loại phần tử sau trình bày điều khiển Listview + LabelEdit: chọn giá trị true bạn cho phép người sử dụng thay đổi chuỗi phần tử + LabelWrap: chọn giá trị true chuỗi tự động xuống hàng chiều dài không đủ để trình bày + MultiSelect: chọn giá trị true bạn cho phép người sử dụng chọn nhiều phần tử + LargeImageList: Đối tượng ImageList chứa danh sách Image theo số mục từ đến n-1 (n số lượng hình) sử dụng cho trường hợp thuộc tính View LargeIcon + SmallImageList: Đối tượng ImageList chứa danh sách đối tượng Image theo số mục từ đến n-1 sử dụng cho trường hợp thuộc tính View SmallIcon + Sorting: Sắp xếp Nếu chọn Ascending cho phép xếp phần tử theo chiều tăng dần + View: Chế độ trình bày tương ứng điều khiển listview : list, Details, LargeIcon, SmallIcon, Title + SelectedItems: Trả danh sách phần tử chọn + Items: danh sách phần tử listview Chú ý: Trong listview phẩn tử lisview có kiểu ListviewItem Nếu listview có nhiều cột Giá trị cột có thuộc tính SubItem DateTimePicker Điều khiển cho phép người sử dụng chọn giá trị thời gian trình bày giá trị với định dạng cho trước -Các thuộc tính: + CustomFormat: Định dạng thời gian + Format: Chọn định dạng có sẵn điều khiển DateTimePicker + MaxDate: ngày lớn cho phép người sử dụng chọn điều khiển DateTimePicker + MinDate: ngày nhỏ cho phép người sử dụng chọn điều khiển + Check: true checkbox check mặc định ShowCheckBox true + ShowCheckBox: chọn giá trị true biểu tượng checkbox xuất bên cạnh giá trị + ShowUpDown: Chọn giá trị False bạn cho phép người sử dụng chọn giá trị thời gian theo hình thức DropDown + Value: Gán hay lấy giá trị thời gian điều khiển -Các biến cố: + CloseUp: xảy người sử dụng kết thúc chọn giá trị ngày điều khiển DateTimePicker + FormatChanged: Xảy sau người sử dụng thay đổi định dạng điều khiển + ValueChanged: xảy người sử dụng chọn giá trị khác với giá trị trước điều khiển Ví dụ: Điều khiển MonthCalendar Tương tự điều khiển DateTimePicker cho phép ta chọn giá trị thời gian tờ lịch tháng trình bày với định dạng cho trước -Thuộc tính: + FirstDateOfWeek: ngày đầu tuần, mặc định ngày khai báo hệ thống + MaxDate: ngày lơn cho phép người sử dụng chọn điều khiển DateTimePicker +MinDate: Chọn ngày nhỏ cho phép người sử dụng chọn điều khiển + SelectionRange: Khoảng thời gian từ ngày bắt đầu đến ngày kết thúc chọn điều khiển + ShowToday: Chọn giá trị true biểu tượng ngày xuất bên điều khiển + ShowTodayCircle: chọn giá trị false bạn muốn trình bày viền màu đỏ quanh giá trị ngày + ShowWeekNumbers: Chọn giá trị true số thứ tự tính theo tuần năm xuất bên trái điều khiển MonthCalendar + TodayDate: Gán hay lấy giá trị điều khiển MonthCalendar Ví dụ: ... xuống vùng làm việc điểu khiển - Move: xảy di chuyển điều khiển Bài tập nhà: Bài 1: Thiết kế form viết chương trình calculator window Bài 2: Thiết kế viết chương trình giải phương trình bậc ẩn ax+b=0... MessageBox.show(noi_dung_thong_bao, tieu_de,MessageboxButtons, MessageBoxIcon, MessageBoxDefaultButton); Bài tập 3: Thiết kế viết chương trình cho form đăng nhập Lable, textbox, button Radiobutton, checkbox... cho phép chọn hay nhiều phần tử lúc - Sorted: =true danh sách đc tăng dần - selectedItems: - Bài tập Thiết kế viết chương trình sau: Sau viết chương trình xử lý kiện (biến cố) -Khi click vào