Xửa lý ngoại lệ
Phát sinh và bắt giữ ngoại lệ
Một Exception (ngoại lệ) là vấn đề phát sinh trong quá trình thực thi chương trình Trong C#, Exception phản ánh tình huống bất thường xảy ra khi chương trình đang chạy, chẳng hạn như việc chia cho số 0.
Xử lý ngoại lệ trong C# cho phép truyền điều khiển giữa các phần của chương trình thông qua bốn từ khóa chính: try, catch, finally và throw.
Một khối try xác định mã mà trong đó có thể xảy ra ngoại lệ đặc biệt, và nó thường được theo sau bởi một hoặc nhiều khối catch để xử lý các ngoại lệ đó.
catch: Một chương trình bắt một ngoại lệ với một ngoại lệ được xử lý tại chỗ Từ khóa catch chỉ bắt một ngoại lệ.
Khóa finally được sử dụng để đảm bảo thực hiện một tập hợp các báo cáo, bất kể có xảy ra ngoại lệ hay không Ví dụ, khi mở một tập tin, thao tác đóng file sẽ luôn được thực hiện, đảm bảo tài nguyên được giải phóng đúng cách.
throw: Một chương trình ném một ngoại lệ khi một vấn đề xuất hiện. Điều này được thực hiện bằng cách sử dụng từ khóa throw.
Dùng Try-catch để xử lý ngoại lệ
Đặt code có khả năng dẫn đến ngoại lệ vào khối “try”
Cung cấp các khối “catch” theo sau “try”
Có thể cung cấp tất cả catch cho các lỗi nếu muốn xử lý, bằng cách sử dụng các lớp exception thích hợp
Nếu không cung cấp catch cho một ngoại lệ, thì exception này đượn lan truyền lên trên.
Khối “{…}” bắt buộc phải có, khác với “{…}” trong if hay for
Đặt bất cứ câu lệnh nào có khả năng phát sinh ra ngoại lệ
Đặt một hay nhiều ngay sau khối try
Không có lệnh nào chen giữa hai khối catch của một try
Cú pháp khối catch như sau catch (Exception-class [var1]) {
// xử lý ngoại lệ 1 } catch (Exception-class [var2]) {
Code có khả năng dẫn đến lỗi
Tham số exception được catch Đoạn xử lý với tình huống có lỗi
Khi một exception được ném ra
Luồng thực thi sẽ nhảy vào khối catch xử lý nó.
Một số đoạn code giải phóng tài nguyên có thể bị bỏ qua Open File
Read Data // ngoại lệ được phát sinh Close File // đoạn code này bị bỏ qua, dù file chưa đóng
Khối try-catch có phần option là finally
Sử dụng để dọn dẹp các tài nguyên đang nắm giữ
Phát sinh một ngoại lệ: sử dụng từ khóa throw throw new System.Exception();
Khi có ngoại lệ xảy ra, việc thực thi sẽ bị ngừng lại ngay lập tức trong khi CLR tìm kiếm trình xử lý ngoại lệ Nếu không tìm thấy trình xử lý trong phương thức hiện tại, CLR sẽ tiếp tục tìm kiếm trong các phương thức gọi cho đến khi phát hiện được Nếu CLR trở về lớp Main() mà không tìm thấy bất kỳ trình xử lý nào, chương trình sẽ kết thúc.
Những đối tượng ngoại lệ
Ngoại lệ phát sinh bởi chương trình
Ngoại lệ được tạo bởi CLR
Lớp System.Exception là cơ sở cho tất cả lớp trong C#
2 lớp kế thừa từ lớp này:
ApplicationException: thường làm lớp cơ bản cho lớp ngoại lệ phát sinh từ ứng dụng
SystemException: do CLR phát sinh
Một số lớp Exception thường dùng
Lớp ngoại lệ Mô tả
System.IO.IOException Xử lý lỗi I/O
System.IndexOutOfRangeException Xử lý các lỗi phát sinh khi một phương pháp đề cập đến một chỉ số mảng nằm ngoài phạm vi.
System.ArrayTypeMismatchException Xử lý các lỗi phát sinh khi loại chưa phù hợp với các kiểu mảng.
System.NullReferenceException Xử lý các lỗi phát sinh từ một đối tượng null.
System.DivideByZeroException Xử lý các lỗi phát sinh từ việc chia cho số không.
System.InvalidCastException Xử lý các lỗi phát sinh trong quá trình phân loại.
System.OutOfMemoryException Xử lý các lỗi được tạo ra từ bộ nhớ không đủ.
System.StackOverflowException Xử lý các lỗi phát sinh từ tràn stack.
Lập trình Visual Studio.Net
Lập trình với Visual Studiou.Net
- Giao diện của Visual Studio C# 2010 Express
+New Project: Tạo Project mới
+ Open Project: Mở Project đã tạo
+ Recent Projects: Các Project mới tạo gần đây nhất
+ Các thuộc tính của Form: Chứa trong cửa sổ Properties
Một số thuộc tính thường dùng
(name) Tên Form Nó như một biến vậy Quan trọng
AllowDrop Cho phép kéo thả
+GrowOnly: cho phép thay đổi kích thước form +GrowAndShrink: không cho phép thay đôi kích thước form
ContexMenuStrip Menu xuất hiện khi chuột phải lên Form
Cursor Con trỏ chuột khi rê trên form
Cho phép nhận phím hay không (cái này kết hợp với sự kiện nhận phím) Opacity Độ trong suốt của form
ShowInTaskbar Hiện thị ở thanh taskbar khi chạy form (true/false)
Vị trí xuất hiện của form +CenterScreen: Giữa màn hình +CenterParent: Giữa Form gọi ra nó (form cha) TopMost Hiển thị đè lên các form khác
WindowState Trạng thái của form
Text Chữ hiển thị khi form chạy
TT Nội dung Yêu cầu kỹ thuật
+ Gõ tên dự án vào mục Name
Tạo Project với tên chính xác
Bước 2 Thêm Form mới vào Project
+ Chọn cửa sổ Reluion Explorer
+ Chuột phải vào tên Dự án
+ Gõ tên Form trong mục Name
Text: Chào mừng các bạn đến với
Thiết lập chính xác thuộc tính
- Chọn cửa sổ Solution Explorer
- Chuột phải vào lớp Program.cs
- Thay thế tên form cần chạy vào mục
Sai hỏng thường gặp, nguyên nhân và biện pháp phòng tránh/ khắc phục
- Nguyên nhân Ở bước 1, chọn sai loại Project
+ Chọn New Project + Chọn Windows Forms Application + Gõ tên dự án vào mục Name
Thêm và điều chỉnh các điều khiển
Toolbox bao gồm các nhóm điều khiển
- All Windows Form: bao gồm tất cả các điều khiển dùng để tạo windows form
- Common Controls: Các điều khiển thông thường
- Container bao gồm các điều khiển có thể chứa các điều khiển khác
- Menu & Toolbars: Các điều khiển dùng để tạo thanh thực đơn và thanh trạng thái.
- Datta: bao gồm các điều khiển làm việc với dữ liệu
- Printing: Điều khiển in ấn
- Dialogs: Bao gồm các điều khiển tạo các loại hộp thoại
* Sắp xếp các điều khiển
+ Chọn kiểu sắp xếp trên thanh Layout
- Sử dụng thuộc tính Dock của điều khiển
+ Chọn thuộc tính Dock\ Chọn loại định vị điều khiển
Điều khiển sẽ chiếm toàn bộ phần phía trên của Form hoặc của điều khiển chứa nó, trong khi đó, điều khiển cũng sẽ chiếm trọn phần bên trái của Form hoặc của điều khiển mà nó nằm trong đó.
Right: Điều khiển sẽ chiếm chọn phần bên phải của Form hoặc của điều khiển chứa nó
Bottom: Điều khiển sẽ chiếm chọn phần bên dưới của Form hoặc của điều khiển chứa nó
Fill: Điều khiển sẽ chiếm chọn phần còn lại của Form hoặc của điều khiển chứa nó
None: Không thay đổi b Trình tự thực hiện
TT Nội dung Yêu cầu kỹ thuật
Tạo Form mới trên Project
+ Chọn cửa sổ Reluion Explorer
+ Chuột phải vào tên Dự án
+ Gõ tên Form trong mục Name frmControl
- Kéo và thả GroupBox 2 lần vào form tạo groupBox1, groupBox2
Thiết lập thuộc tính: groupBox1.Dock=Top groupBox2.Dock=Fill
- Kéo và thả Lable 5 lần vào form tạo lable1, lable2, lable3, lable4, lable5.
- Kéo và thả TextBox vào form 3 lần
Kéo và thả chính xác các điều khiển tạo textBox1, textBox2, textBox3
- Kéo và thả 1 DateTimePicker và thiết lập thuộc tính Format=Short
- Kéo và thả Button 2 lần tạo button1, button2
* Thiết lập các thuộc tính
To configure properties in the application, set the following attributes: groupBox1.Text to "Information," groupBox2.Text to "Registration," label1.Text to "Full Name," label2.Text to "Address," label3.Text to "Date of Birth," and label4.Text to "Gender." Additionally, assign the names textBox1.Name as "txtHoten," textBox2.Name as "txtDiachi," textBox3.Name as "txtGioitinh," and dateTimePicker1.Name as "dtNgaysinh," while ensuring button1 is properly defined.
Thiết lập chính xác thuộc tính
- Click đúp chuột trái vào nút Đăng
Viết code chính xác ký
- Viết code privatevoid btDK_Click(object sender, EventArgs e)
{ lbDK.Text = "Họ tên: " + txtHoten.Text + "\n Địa chỉ:
" + txtDiachi.Text + "\n Ngày sinh:" + dtNgaysinh.Text +
- Click đúp chuột trái vào nút Thoát
- Viết code privatevoid btThoat_Click(object sender, EventArgs e)
- Chọn cửa sổ Solution Explorer
- Chuột phải vào lớp Program.cs
- Thay thế tên form cần chạy vào mục
Application.Run(new Ten_form());
1 Tạo Project Modau có chứa
- Form frmchao có dòng tiêu đề “CHÀO MỪNG ĐẾN VỚI LẬP TRÌNH C# 1 – LẬP TRÌNH WINDOWS FORM”
Yêu cầu dòng tiêu đề chạy từ phải qua trái
Yêu cầu khi nhấn kết nối sẽ hiển thị thông tin nhập vào thành một hàng dước mục Password
Tạo thực đơn
Tạo thực đơn chính
- Dùng để nhóm các lệnh cùng nhau
- Menu có thể chứa: menu ngang, menu dọc, menu con, các biểu tượng, các phím nóng, các đường phân các
* Các thuộc tính thường dùng
- Name: Tên menu được dùng trong mã lệnh
- Checked: Có/Không dòng menu xuất hiện checked Ngầm định là False
- SortCutKey: Đặt phím nóng cho menu
- ShowShortcut: Có/ Không phím nóng hiển thị trên dòng menu, ngầm định là true
- Text: Xuất hiện trên dòng menu
Click: Xảy ra khi một dòng của menu được click chuột hoặc ấn phím nóng Ngầm định khi nháy đúp chuột trong chế độ thiết kế
* Viết lệnh cho dòng của menu gọi 1 Form
= new ;
.Show() hoặc .ShowDialog();
TT Nội dung Yêu cầu kỹ thuật
Trong cửa sổ Solution Explorer
Chuột phải vào tên Project->
Gõ tên Form: frmMenu.cs
Tạo form với tên form chính xác
- Kéo và thả MenuStrip vào Form tạo menuStrip1
Tạo giao diện chính xác
- Tạo menu con của File (menu cấp 2)
- Tạo menu con của View
- Kéo và thả PictureBox vào Form tạo pictureBox1
- Code cho sự kiện Click vào
Load: privatevoid loadToolStripMenuItem_Clic k(object sender, EventArgs e)
OpenFileDialog dlg Viết code chính xác newOpenFileDialog(); dlg.Title = "Load Photo"; dlg.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*"; if (dlg.ShowDialog() = DialogResult.OK)
{ pictureBox1.Image newBitmap(dlg.OpenFile()); } catch (Exception ex)
MessageBox.Show("Unable to load file: "+ ex.Message);
} normalToolStripMenuItem.E nabled = true; strecthToolStripMenuItem.E nabled = true; centerToolStripMenuItem.E nabled = true;
- Code cho sự kiện click củaexitToolStripMenuItem privatevoid exitToolStripMenuItem_Clic k(object sender, EventArgs e)
- Code cho sự kiện click củanormalToolStripMenuItem privatevoid normalToolStripMenuItem_ Click(object sender,
- Code cho sự kiện click củastrecthToolStripMenuItem privatevoid strecthToolStripMenuItem_ Click(object sender,
{ pictureBox1.SizeMode PictureBoxSizeMode.Stretc hImage;
- Code cho sự kiện click củacenterToolStripMenuItem privatevoid centerToolStripMenuItem_C lick(object sender,
{ pictureBox1.SizeMode PictureBoxSizeMode.Center Image;
Lựa chọn chính xác Bước
Tạo thực đơn nghữ cảnh
* Chức năng: Menu ngữ cảnh hiển thị khi click chuột phải trên đối tượng của Form hoặc trên form
* Để tạo ra menu ngữ cảnh chúng ta sử dụng công cụ ContextMenuStrip trong nhóm Menus & Toolbars trong Toolbox
* Hiển thị menu ngữ cảnh
- Chọn đối tượng hoặc Form
- Đặt thuộc tính ContextMenuStrip cuả đối tượng được chọn là tên của menu ngữ cảnh. b Trình tự thực hiện ( TrênForm của phần tạo thực đơn chính )
TT Nội dung Yêu cầu kỹ
Kéo và thả ContextMenuStrip vào Form
Kéo thả chính xác Bước
Tạo các thành phần cho menu ngữ cảnh bao gồm: View, Exit menu View bao gồm Normal,
Tạo giao diện chính xác Bước
Gán Menu ngữ cảnh cho đối tượng
Chọn đúng đối tượng, Thiết lập đúng thuộc tính Bước
{ pictureBox1.SizeMode PictureBoxSizeMode.Norm al;
{ pictureBox1.SizeMode PictureBoxSizeMode.Stretc hImage;
} privatevoid centeToolStripMenuItem_C lick(object sender,
{ pictureBox1.SizeMode PictureBoxSizeMode.Cente rImage;
} privatevoid eToolStripMenuItem_Click( object sender, EventArgs e)
Lựa chọn chính xác Bước
Lựa chọn chính xác Chạy được form.Bài tập
1 Tạo Project Menu chưa form sau
2 Tạo Project menu2 chứa Form có menu
Tạo thanh trạng thái
Tạo thanh trạng thái
Thanh công trạng thái là thanh nằm ngang dưới đáy cửa sổ, bao gồm nhiều phần tử để hiển thị thông tin về trạng thái hoạt động của ứng dụng Mỗi phần tử có thể là văn bản, biểu tượng hoặc thanh tiến trình.
+ StatusLabel: là một văn bản
+ DropDownButton: Nút nhấn trải ra một danh sách với biểu tượng là hình ảnh + SplitButton: Nút nhấn trải ra một danh sách với biểu tượng là hình ảnh
- Nhấp chuột kéo và thả đối tượng Status vào form
- Thay đổi thuộc tính cho loại trạng thái
Bài tập
Giới thiệu: Bài học này cung cấp các kiến thức về hộp thoại: Modal và
- Phân biệt được hai loại hộp thoại Modal và Modaless;
- Biết cách sử dụng hộp thoại thông điệp;
- Sử dụng được phương thức Form.Close;
- Thực hiện được các biện pháp an toàn cho máy tính
1 Tạo hộp thoại thông điệp
* Các dạng hộp hoại thông điệp
MessageBox.Show(string text, string caption, MessageBoxButtons button, MessageBoxIcon icon, MessageBoxDefaultButton defaultbutton);
- text: chuỗi hiển thị nội dung thông báo
- caption: Tiêu đề hộp thoại
- MessageBoxButtons: nút của hộp thoại bao gồm các giá trị
+ OK: hộp thoại chỉ có nút OK
+ OKCancel: Hộp thoại gồm 2 nút OK và Cancel
+ YesNo: Hộp thoại gồm 2 nút Yes và No
+ YesNoCancel: hộp thoại gồm 3 nút Yes, No và Cancel
- MessageBoxIcon: Biểu tượng của hộp thoại
Tạo hộp thoại
Tạo hộp thoại thông điệp
* Các dạng hộp hoại thông điệp
MessageBox.Show(string text, string caption, MessageBoxButtons button, MessageBoxIcon icon, MessageBoxDefaultButton defaultbutton);
- text: chuỗi hiển thị nội dung thông báo
- caption: Tiêu đề hộp thoại
- MessageBoxButtons: nút của hộp thoại bao gồm các giá trị
+ OK: hộp thoại chỉ có nút OK
+ OKCancel: Hộp thoại gồm 2 nút OK và Cancel
+ YesNo: Hộp thoại gồm 2 nút Yes và No
+ YesNoCancel: hộp thoại gồm 3 nút Yes, No và Cancel
- MessageBoxIcon: Biểu tượng của hộp thoại
- MessageBoxDefaultButton: Nút chọn mặc định button1 hoặc buton2 hoặc button3
* Những trường hợp sử dụng Message Box:
- Trong từng trường hợp, các MessageBox sẽ có cách sử dụng khác nhau:
+ Thông báo cho người sử dụng biết không thể sử dụng chức năng hay lưu ý một vấn đề trong chương trình
+ Cần sự xác nhận của người sử dụng đối với một lệnh quan trọng như:
- Xóa một dữ kiện quan trọng
- Thoát nhưng chưa lưu trữ
- Tắt một lúc nhiều ứng dụng
- Và các trường hợp cần được xác nhận
+ Thông báo những thứ quan trong trong chương trình.
* DialogResult có kết quả trả về từ MessageBox.Show bao gồm các giá trị có thể là:
DialogResult.No b Trình tự thực hiện
Để lập trình sự kiện đóng Form, khi người dùng nhấn nút Thoát, một hộp thoại sẽ xuất hiện hỏi liệu họ có muốn đóng Form hay không Nếu người dùng chọn "Yes", Form sẽ được đóng lại; ngược lại, nếu chọn "No", Form sẽ vẫn mở.
- Viết sự kiện Click cho nút Thoát privatevoid btThoat1_Click(object sender, EventArgs e)
{ if (MessageBox.Show("Bạn có muốn đóng Form không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) this.Close();
Sử dụng phương thức Form.Close
Sự kiện FormClosing: xảy ra khi Form đang đóng
Khi gọi sự kiện này sẽ có tham số:FormClosingEventArgs e
Ta sử dụng nó để xử lý việc tiếp tục đóng form hay không? e Cancelse thì tiếp tục đóng form e.Cancel= true thì ngừng đóng form
Bước 1: Chọn Form\ Chọn Properties\Chọn Event
Bước 2: Nhấn đúp chuột vào FormClosing
Bước 3: Viết code privatevoid Form1_FormClosing(object sender,
{ if (MessageBox.Show("Bạn có muốn đóng Form không?",
MessageBoxDefaultButton.Button1) == DialogResult.Yes) { e.Cancel = false;
Tạo hộp thoại Modal
Hộp thoại trạng thái là một loại hộp thoại mà chỉ trả giá trị cho chương trình khi nó được đóng lại Khi hộp thoại đang hiển thị, người dùng không thể chuyển quyền điều khiển đến các cửa sổ con khác trong cùng ứng dụng Điều này có nghĩa là tất cả các lệnh bên dưới lệnh gọi hộp thoại sẽ không thể thực thi cho đến khi hộp thoại được đóng.
Khi đóng hộp thoại modal, có giá trị trả về, chương trình mới tiếp tục thực hiện các câu lệnh bên dưới dòng lệnh gọi hộp thoại modal.
Tạo hộp thoại Modal bằng cách gọi phương thức ShowDialog của Form
Bước 1 Tạo Form chính: frmMain
Bước 2: Tạo Form phụ: frmSecond
Bước 3 Gọi Form phụ trên form chính frmSecond frm=new frmSecond((); frm.ShowDialog();
Tạo hộp thoại Modaless
Hộp thoại không trạng thái (modaless dialog) cho phép chương trình nhận giá trị ngay lập tức, giúp chuyển quyền điều khiển đến các cửa sổ khác trong cùng ứng dụng hoặc thực hiện các lệnh sau khi gọi hộp thoại.
Tạo hộp thoại Modaless bằng cách gọi phương thức Show của Form
Bước 1 Tạo Form chính: frmMain
Bước 2: Tạo Form phụ: frmSecond
Bước 3 Gọi Form phụ trên form chính frmSecond frm=new frmSecond((); frm.Show();
Tạo form khi nhấn vào mỗi nút sẽ hiển thị ra hộp thoại tương ứng
Các hộp thoại tập tin
Tập tin và đường dẫn
Khái niệm về các loại tập tin
Các kiểu dữ liệu như số, mảng và cấu trúc được lưu trữ trong bộ nhớ RAM của máy tính, do đó khi chương trình kết thúc, dữ liệu này sẽ bị mất.
Để khắc phục vấn đề lưu trữ dữ liệu, người ta đã phát triển các kiểu tập tin cho phép lưu trữ thông tin trên bộ nhớ ngoài như đĩa Nhờ vào việc này, dữ liệu sẽ được giữ lại sau khi chương trình kết thúc, cho phép người dùng truy cập và sử dụng nhiều lần.
Có 3 loại dữ liệu kiểu tập tin:
Tập tin văn bản (Text File) là loại tập tin dùng để lưu trữ các ký tự dưới dạng mã ASCII trên đĩa Dữ liệu trong tập tin này được tổ chức thành các dòng, mỗi dòng sẽ kết thúc bằng ký tự xuống dòng (new line).
The character '\n' is a combination of two characters: CR (Carriage Return, ASCII code 13) and LF (Line Feed, ASCII code 10) Each file concludes with the EOF (End Of File) character, which has an ASCII code of 26 Additionally, text files can only be accessed in a sequential manner.
Tập tin định kiểu (Typed File) là loại tập tin chứa nhiều phần tử cùng kiểu, chẳng hạn như char, int, long, cấu trúc, và được lưu trữ trên đĩa dưới dạng chuỗi các byte liên tục.
Tập tin không định kiểu (Untyped File) là loại tập tin chứa dữ liệu mà không có cấu trúc rõ ràng, chỉ chú trọng vào các yếu tố vật lý như kích thước và các yếu tố ảnh hưởng đến tập tin.
Khi một tập tin được mở để làm việc, luôn có một vị trí cụ thể trong tập tin nơi việc đọc hoặc ghi thông tin diễn ra Vị trí này được hình dung như một con trỏ, được gọi là con trỏ tập tin.
Sau khi hoàn tất việc đọc hoặc ghi dữ liệu, con trỏ sẽ di chuyển thêm một phần tử về phía cuối tập tin Dấu hiệu kết thúc tập tin, được gọi là EOF (End Of File), sẽ xuất hiện ngay sau phần tử dữ liệu cuối cùng trong tập tin.
Biến tập tin là một kiểu dữ liệu dùng để đại diện cho một tập tin Dữ liệu trong tập tin có thể được truy xuất thông qua các thao tác sử dụng biến tập tin này.
Xử lý hệ thống tập tin và thư mục
Các lớp hệ thống tập tin
The System.IO namespace contains a collection of classes designed for locating and manipulating files, directories, and devices These file system classes are categorized into two types: informational and utility.
Hầu hết các class loại informational dẫn xuất từ class cơ sở
FileSystemInfo Các class này trưng tất cả thông tin hệ thống liên quân các đối tượng hệ thống tập tin Đó là các class có tên FileInfo và
Class DriveInfo trong hệ thống tập tin cung cấp thông tin về các thiết bị, mặc dù nó là một lớp thông tin và không kế thừa từ FileSystemInfo do không chia sẻ các hành vi chung Ví dụ, trong khi bạn có thể xóa các tập tin và thư mục, bạn không thể xóa các thiết bị.
Utility classes provide static methods (or shared methods in Visual Basic) to perform various operations on file system objects such as files, directories, and file system paths The primary utility classes include File, Directory, and Path.
FileSystemInfo cung cấp các chức năng cơ bản cho tất cả các lớp xử lý hệ thống tập tin và thư mục
Bảng các thuộc tính chính của FileSystemInfo bao gồm: Attributes, cho phép gán hoặc lấy giá trị thuộc tính của tập tin hay thư mục; CreationTime, dùng để gán hoặc lấy thời gian tạo lập; Exists, kiểm tra sự tồn tại của tập tin hay thư mục; Extension, lấy thông tin phần mở rộng của tập tin; LastAccessTime, gán hoặc lấy thời gian truy cập cuối cùng; LastWriteTime, lấy hoặc gán thời gian ghi cuối cùng; Name, trả về tên của tập tin hay thư mục; FullName, lấy đường dẫn đầy đủ; Delete, xóa tập tin hay thư mục trong hệ thống; và Refresh, cập nhật dữ liệu với thông tin mới nhất từ hệ thống tập tin.
FileInfo cung cấp các chức năng cơ bản để truy xuất và thao tác với một tập tin trong hệ thống tập tin.
Bảng các thuộc tính chính của FileInfo bao gồm: Directory, trả về thư mục chứa tập tin hiện hành; DirectoryName, cung cấp tên thư mục chứa tập tin; IsReadOnly, cho phép lấy và thiết lập thông tin chỉ đọc cho tập tin; Length, hiển thị kích thước của tập tin; AppendText, tạo đối tượng StreamWriter để ghi thêm văn bản vào tập tin; CopyTo, sao chép tập tin đến thư mục khác; Create, tạo một tập tin mới dựa trên thông tin của tập tin hiện hành; CreateText, tạo đối tượng StreamWriter để ghi văn bản vào tập tin; Encrypt, mã hóa nội dung tập tin; MoveTo, di chuyển tập tin đến thư mục khác; Open, mở tập tin để đọc hoặc ghi; OpenRead, mở tập tin ở chế độ chỉ đọc; OpenText, mở tập tin và trả về StreamReader để đọc nội dung; OpenWrite, mở tập tin ở chế độ chỉ ghi; và Replace, thay thế nội dung của tập tin bằng thông tin trong FileInfo.
DirectoryInfo cung cấp các chức năng cơ bản để truy xuất và thao tác với một thư mục trong hệ thống tập tin.
DirectoryInfo cung cấp nhiều thuộc tính quan trọng để quản lý thư mục, bao gồm Parent, cho phép truy xuất thư mục cha của thư mục hiện hành; Root, trả về thư mục gốc trong chuỗi đường dẫn; và Create, dùng để tạo thư mục mới theo thông tin đã định nghĩa Ngoài ra, thuộc tính CreateSubdirectory cho phép tạo thư mục con, trong khi GetDirectories trả về mảng các thư mục con dưới dạng đối tượng DirectoryInfo Để lấy danh sách các tập tin trong thư mục hiện hành, bạn có thể sử dụng GetFiles, và GetFileSystemInfos sẽ cung cấp thông tin về cả tập tin lẫn thư mục Cuối cùng, MoveTo cho phép di chuyển thư mục hiện hành đến vị trí khác.
Ví dụ: Duyệt qua các tập tin có trong thư mục Windows:
Console.WriteLine("Directory: {0}", ourDir.FullName); foreach(FileInfo file in ourDir.GetFiles())
Console.WriteLine("File: {0}", file.Name);
DirectoryInfo cung cấp các chức năng cơ bản để truy xuất và thao tác với một ổ đĩa trong hệ thống tập tin.
Bảng các thuộc tính chính của DriveInfo o AvailableFreeSpace Trả về kích thước còn trống cho phép lưu trữ o DriveFormat Trả về thông tin định dạng của ổ đĩa ( , NTFS,
Tạo hộp thoại lưu tập tin
Lớp SaveFileDialog là lớp dùng cho phép người dùng chọn một nơi để lưu dữ liệu. Để khai lớp SaveFileDialog có 2 cách:
SaveFileDialog SaveFileDialog_name = new SaveFileDialog();
Sau đây là một số thuộc tính cơ bản của lớp SaveFileDialog:
Title: Tiêu đề của hộp thoại lưu tập tin
Ví dụ: file.Title= “Save as”
InitialDirectory: Thư mục khởi tạo hiển thị bởi hộp thoạilưutập tin.
OpenFileDialog_name.InitialDirectory=@ “Đường_dẫn”
+ Trả lại đường dẫn đến tập tin được chọn trong hộp thoại lưu tập tin.
+ Gán giá trị cho TextBox: File name trong hộp thoại mở tập tin
Thiết lập bộ lọc loại tập tin cho phép người dùng chọn định dạng tệp xuất hiện trong cửa sổ hiển thị nội dung của thư mục đang được chọn Tùy chọn này sẽ hiển thị trong hộp "Save as type" trong hộp thoại lưu tệp.
SaveFileDialog_name.Filter= ten_chuoi1(Mô_tả_đuôi_tệp)|*.duoi1;*.duoi2;
…| [ten_chuoi2(Mô_tả_đuôi_tệp)|*.duoi1;*.duoi2;…|
- Ví dụ 1: file.Filter = "Text(*.txt)|*.txt|All files|*.*";
ShowDialog(): Hiển thị hộp thoại lưu tập tin.
TT Nội dung Yêu cầu kỹ thuật
Bước 1 Tạo Form trên Project
Explorer Chuột phải vào tên Project->
Gõ tên Form: frmSaveFile.cs
Tạo form với tên form chính xác
Tạo giao diện chính xác
- Khai báo đối tượng thuộc lớp
- Thiết lập các thuộc tính
Lựa chọn chính xác Chạy được form.
6 3 Tạo hộp thoại mở tập in
Lớp OpenFileDialog cho phép người dùng chọn một hoặc nhiều tên tập tin, giúp ứng dụng xử lý các tập tin mà người dùng đã chọn Có hai cách để khai báo lớp OpenFileDialog.
OpenFileDialog OpenFileDialog_name = new OpenFileDialog();
Sau đây là một số thuộc tính cơ bản của lớp OpenFileDialog:
Title: Tiêu đề của hộp thoại mở tập tin
Ví dụ: opFile.Title= “Open”
InitialDirectory: Thư mục khởi tạo hiển thị bởi hộp thoạimở tập tin.
OpenFileDialog_name.InitialDirectory=@ “Đường_dẫn”
Multiselect: thuộc tính kiểu Boolean có thể nhận 1 trong 2 giá trị:
+ Giá trị là false (mặc định) : cho phép lựa chọn 1 tập tin
+ Giá trị là true cho phép người dùng chọn nhiều tập tin
+ Trả lại đường dẫn đến tập tin được chọn trong hộp thoại mở tập tin.
+ Gán giá trị cho TextBox: File name trong hộp thoại mở tập tin
Nếu thuộc tính Multiselect=true, thuộctính này sẽ trả về một mảng tên tập tin mà người dùng chọntrong hộp thoại mở tập tin
Thiết lập bộ lọc loại tập tin để hiển thị nội dung của thư mục đã chọn Tùy chọn này sẽ xuất hiện trong hộp "Files of type" trong hộp thoại mở tập tin.
OpenFileDialog_name.Filter= ten_chuoi1(Mô_tả_đuôi_tệp)|*.duoi1;*.duoi2;
…| [ten_chuoi2(Mô_tả_đuôi_tệp)|*.duoi1;*.duoi2;…|
- Ví dụ 1: opFile Filter "Image(*.jpg;*.jpeg;*.gif;*.png;*.bmp)|*.jpg;*.jpeg;*.gif;*.png;*.bmp";
Ví dụ 2: opFile Filter = “All File(*.*)|*.*|
Document(*.doc;*.dot;*.html;*.url)|*.doc;*.dot;*.html;*.url";
ShowDialog(): Hiển thị hộp thoại mở tập tin.
Nội dung bước công việc (Trình tự thực hiện bước công việc)
Bước 1: Tạo Form trên Project
Explorer Chuột phải vào tên Project-> Chọn
Gõ tên Form: frmOpenFile.cs
Code cho sự kiện Click của nút Open:
- Khai báo đối tượng thuộc lớp
- Thiết lập các thuộc tính
- Xử lý tập tin đã chọn
Hoàn thiệnForm đúng theo yêu cầu trong thời gian cho phép
- New tạo ra một file mới
- Open sẽ mở hộp thoại Open File cho phép ta chọn file txt và khi mở thì nội dung file sẽ hiển thị trên TextBox (multiline)
- Save cho phép chung ta ghi nội dung file trên Textbox.
Sử dụng các đối tượng
Sử dụng TextBox, Button, Label
- Chức năng: Hiển thị dữ liệu
Một số thuộc tính cơ bản
Tên thuộc tính Chức năng
Tên của label (như kiểu tên biến vậy) Nó rất quan trọng
BackColor Màu nền của label
Các thuộc tính trong này cho phép thay đổi kiểu chữ, cỡ chữ…trong label ForeColor Màu chữ trong label
- Chức năng: textbox chủ yếu là để nhập dữ liệu đầu vào, ngoài ra còn có thể dùng để xuất dữ liệu.
Một số thuộc tính cơ bản
Tên thuộc tính Chức năng
(name) Tên của textbox (như kiểu tên biến vậy) Nó rất quan trọng BackColor Màu nên của texbox
Cursor Con trỏ chuột khi rể chuột qua texbox
Cho phép copy chữ và sửa trong texbox hay không (true/false)
Các thuộc tính trong này cho phép thay đổi kiểu chữ, cỡ chữ…trong textbox
ForeColor Màu chữ trong textbox
Multiline Cho phép nhiều dòng
PaswordChar Khi nhập vào sẽ được mã hóa thánh dấu *
ReadOnly Gần giống Enabled Nhưng vẫn có thể bôi đen copy được ScrollBars
Khi chữ vượt quá kích thước textbox thì sẽ xuất hiện thanh cuộn Nên bật Multiline
Text Nội dung (giá ttrị) trong textbox Kiểu dũ liệu: string
False: Ẩn trên form WordWrap Ngắt dòng khi chạm lề
Một số sự kiện thường dùng
- TextChanged: sự kiện xẩy ra khi chữ trong textbox thay đổi
- KeyUp: sự kiện khi đang gõ chữ trong textbox (bắt đầu ấn nút) Ứng dụng rất lớn
Button được dùng chủ yếu để bắt đầu thực hiện một thuật giải (từ Input -> Output) bằng sự kiện click.
Một số thuộc tính cơ bản
Tên thuộc tính Chức năng
(name) Tên của button (như kiểu tên biến vậy) Nó rất quan trọng BackColor Màu nền của button
Cursor Con trỏ chuột khi rê chuột qua buton
Cho phép click vào nút (true) hoặc không cho click vào nút (false)
Các thuộc tính trong này cho phép thay đổi kiểu chữ, cỡ chữ…hiển thị trên button
Text Nội dung (giá ttrị) trong textbox Kiểu dũ liệu: string
Một số sự kiện cơ bản
- Đây là sự kiện (những lệnh sẽ thực hiện) khi click vào button này
To add a click event to a button in Design mode, double-click the button to display the code for its click event The click event code is structured as follows: private void button1_Click(object sender, EventArgs e).
} trong đó button1 là (name) của nút
- Khi click vào button này thì chương trình sẽ thực hiện toàn bộ code trong 2 dấu { }
- Sự kiện (những lệnh sẽ thực hiện) khi rê chuột lên trên button này
- Sự kiện khi đã rê chuột lên trên nó rồi di chuột ra khỏi nó
- Khi click vào nút đăng nhập sẽ hiển thị thông tin đăng nhập ở phần thông tin đăng nhập
- Khi click vào nút thoát sẽ đóng Form.
TT Nội dung Yêu cầu kỹ thuật
Explorer Chuột phải vào tên Project-> Chọn Add ->
Gõ tên Form: frmLabelTextboxButton.cs
Tạo form với tên form chính xác
Tạo giao diện a Kéo và thả các đối tượng lên Form
- Kéo và thả Label trên
Kéo và thả chính xác các đối tượng lầntạo label1, label2, label3
- Kéo và thả TextBox trên
ToolBox vào form 2 lần tạo textbox1, textbox2
- Kéo và thả Button trên
ToolBox vào form 2 lần tạo button1, button2 b Thiết lập các thuộc tính label1.Text = "Tên người dùng"; label2.Text = "Mật khẩu" label3.Text = "Thông tin đăng nhập:"; textbox1:
Text = "&Thoát" vào đúng vị trí trên forn
Thiết lập chính xác các thuộc tính
Viết code a Code cho sự kiện Click của nút Đăng nhập: privatevoid
Viết code chính xác sender, EventArgs e)
{ lbInfo.Text +"\n Tên người dùng: "
} b Code cho sự kiện Click của nút Thoát: privatevoid btExit_Click(object sender, EventArgs e)
Sử dụng ListBox
* Chức năng: Cho phép xem chọn các dòng dữ liệu
* Một số thuộc tính thường dùng
Tên thuộc tính Chức năng
(name) Tên của ListBox (như kiểu tên biến vậy) Nó rất quan trọng
Mảng các dòng trong ListBox Items[0]= “Cat”
MutiColumn true: Chia ListBox thành nhiều cột false: Không chia ListBox thành nhiều cột
Trả về dòng hiện thời được chọn Nếu chọn nhiều dòng thì trẻ về 1 giá trị tùy ý của các dòng được chọn
SelectedItem Trả về giá trị dòng được chọn
SelectedItems Trả về mảng giá trị các dòng được chọn
Có (true)/Không (false) sắp xếp dữ liệu trong ListBox Ngầm định là false
Xác định số lượng dòng được chọn của ListBox One: Chỉ được chọn 1 dòng
Muli: được chọn nhiều dòng Riêng với thuộc tính Items có một số phương thức thường dùng
- Add(“string”): thêm 1 dòng vào ListBox
Ví dụ: listbox1.Items.Add(“Cat”); listbox1.Items.Add(“Mouset”);
- RemoveAt(row): Xóa dòng ở vị trí row
Ví dụ: listbox1.Items.RemoveAt(row)
- Clear: Xóa tất cả các dòng
Ví dụ: listbox1.Items.Clear();;
* Một số sự kiện thường dùng
SelectedIndexChanged: Xảy ra khi chọn một dòng.
- Nhấn vào nút Add sẽ thêm họ tên sinh viên vào ListBox Danh sách sinh viên
- Nhấn vào nút Remove sẽ xóa đi item đang được chọn trong ListBox
- Nhấn vào nút Clear sẽ xóa toàn bộ các item trong ListBox
- Nhấn vào nút Exit sẽ đóng Form
TT Nội dung Yêu cầu kỹ thuật
Explorer Chuột phải vào tên
Gõ tên Form: frmListBox.cs
Tạo form với tên form chính xác
Tạo giao diện a Kéo và thả các đối tượng lên Form
- Kéo và thả Label trên
ToolBox vào form 2 lần tạo label1, label2
- Kéo và thả Listbox trên
- Kéo và thả TextBox trên
ToolBox vào form tạo textbox1
- Kéo và thả Button trên
ToolBox vào form 4 lần tạo button1, button2, button3, button4 b Thiết lập các thuộc tính label1.Text = "Danh sách sinh viên"; label2.Text = "Họ tên sinh viên" textbox1:
Kéo và thả chính xác các đối tượng vào đúng vị trí trên forn
Thiết lập chính xác các button2
Viết code a Code cho sự kiện Click của nút Add: privatevoid btAdd_Click(object sender, EventArgs e)
{ lbDSSV.Items.Add(txtH oten.Text); txtHoten.Clear();
} b Code cho sự kiện Click của nút Remove: privatevoid btRemove_Click(object sender, EventArgs e)
{ int row lbDSSV.SelectedIndex; if(row!=-1)
Viết code chính xác c Code cho sự kiện Click của nút Clear: privatevoid btClear_Click(object sender, EventArgs e)
} d Code cho sự kiện Click của nút Thoát: privatevoid btExit_Click(object sender, EventArgs e)
Lựa chọn chính xác Bước
Sử dụng ComboBox
- Chức năng: Là sự kết hợp của TextBox và ListBox
- Thuộc tính: Một số thuộc tính thường dùng
Tên thuộc tính Chức năng
Tên của ComboBox (như kiểu tên biến vậy) Nó rất quan trọng
Simple: Gõ giá trị DropDown: Chọn hoặc gõ giá trị DropDownList: Chỉ cho phép chọn giá trị Items
Mảng các dòng trong ComboBox Items[0]= “Cat”
Trả về chỉ số dòng được chọn Nếu không chọn nó có giá trị -1 SelectedItem Trả về giá trị dòng được chọn
Có (true)/Không (false) sắp xếp dữ liệu trong ListBox Ngầm định là false
Riêng với thuộc tính Items có một số sự kiện thường dùng
- Add(“string”): Thêm một dòng vào ComboBox
- RemoveAt(row): Xóa dòng ở vị trí row
- Clear(): Xóa tất cả các dòng
- Sự kiện thường dùng là
SelectedIndexChanged: Xảy ra khi chọn một dòng
- Khi LoadForm thì sẽ tự động thêm các dòng vào ComboBox: cboFont là các font chữ; cbo size và các cơ chữ (8-72)
- Khi chọn font trong combobox thì font chữ của label “Hướng đãn sử dụng ComboBox” sẽ được thay đổi theo
- Khi chọn Size trong combobox thì cỡ chữ của label “Hướng đãn sử dụng ComboBox” sẽ được thay đổi theo
TT Nội dung Yêu cầu kỹ thuật
Explorer Chuột phải vào tên
Gõ tên Form: frmComboBox.cs
Tạo form với tên form chính xác
Tạo giao diện a Kéo và thả các đối tượng lên Form
- Kéo và thả Label trên
ToolBox vào form 3 lần tạo label1, label2, label3
- Kéo và thả ComboBox trên
ToolBox vào form 2 lần tạo combobox1, combobox2 b Thiết lập các thuộc tính label1.Text = "Font"; label2.Text = "Size"; label2.Text = "Hướng dẫn sử dụng ComboBox"; combobox1
Kéo và thả chính xác các đối tượng vào đúng vị trí trên forn
Thiết lập chính xác các thuộc tính
3 a Code cho sự kiện Load
Form: privatevoid frmComboBox_Load(obj ect sender, EventArgs e)
FontFamily[] font FontFamily.Families; for (int i = 0; i < font.Length; i++) cboFont.Items.Add(font
[i].Name); for (int i = 8; i