Bài giảng Lập trình giao diện

Giao diện là nơi cung cấp chức năng cho người sử dụng, do đó cần có đầy đủ

các chức năng, dễ sử dụng và sử dụng an toàn

 Giao diện là nơi cung cấp các trợ giúp, do đó cần có đầy đủ các hướng dẫn sử

dụng, kịp thời và hiệu quả

 Phần mềm là công cụ sử dụng hàng ngày, nên giao diện cần có khả năng tùy

biến và linh hoạt để tránh nhàm chán

- Với vai trò quan trọng như trên, giao diện phần mềm cần phải đạt được các yêu cầu

sau:

 Thân thiện: người sử dụng sẽ không có cảm giác lúng túng, mất tự tin khi sử

dụng chương trình vì mọi công cụ đã được hiển thị rõ ràng và sắp xếp có thứ tự

theo quy trình nghiệp vụ.

 Dễ sử dụng: mọi danh mục, thanh công cụ, biểu tượng, văn bản minh họa được

thiết kế gần gũi với nhận thức của người dùng, giúp họ tiếp cận nhanh mọi chức

năng của chương trình.

 Tin cậy: một giao diện với màu sắc, đường nét sắc sảo, nội dung rõ ràng, mạch

lạc và bố trí hợp lý sẽ tạo cảm giác thoải mái và tin tưởng cho người sử dụng.

pdf196 trang | Chia sẻ: Mr Hưng | Lượt xem: 765 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Lập trình giao diện, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
àn phím. - Hai thuộc tình quan trọng của lớp KeyPressEventArgs:  KeyChar: mã ASCII của ký tự được nhấnKey  Handled: True/False: cho biết sự kiện KeyPress có được xử lý/chưa xử lý. Nếu chưa xử lý, ứng dụng sẽ xử lý mặc định. - Xử lý sự kiện KeyPress trên form:  Khai báo hàm xử lý sự kiện KeyPress  Thiết lập thuộc tính KeyPreview = True  Trong tab Event, double click lên sự kiện KeyPress Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 130 - Xử lý sự kiện KeyPress trên control:  Khi chúng ta nhấn một phím trên các control cho phép nhập dữ liệu (TextBox, ComboBox), sự kiện KeyPress của các control này cũng được phát sinh và cách xử lý tương tự như đối với Form  Ví dụ: xử lý sự kiện KeyPress trên TextBox, chỉ cho phép nhập số: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 131  Char.IsDigit (key): trả về True nếu key là kí tự số  Char.IsControl (key): trả về True nếu key là kí tự điều khiển 1.3. Sự kiện KeyUp, KeyDown - Sự kiện KeyDown được phát sinh khi một phím được nhấn - Sự kiện KeyUp được phát sinh khi phím được nhả - Hàm xử lý hai sự kiện này nhận vào đối số là đối tượng của lớp KeyEventArgs, có chứa số thông tin về các ký tự non-character (Shift, Ctrl, Alt, PgUp, PgDn,) - Các thuộc tính của lớp KeyEventArgs  Alt, Control, Shift : phím tương ứng được nhấn  KeyCode: Trả về một giá trị trong enum Keys tương đương với một phím được nhấn. Ví dụ nhấn phím A, thì KeyCode sẽ trả về Keys.A  KeyData: Giá trị kiểu Keys kết hợp bởi nhiều phím (các phím modifier và phím thông thường) à Để kiểm tra tổ hợp phím, sử dụng KeyData. Ví dụ: if (e.KeyData == (Keys.Control | Keys.A)) { //... }  KeyValue: Giá trị của KeyCode theo kiểu integer  Modifiers: xác định được các phím nào được nhấn (SHIFT, CTRL và ALT), chỉ trả về các giá trị của các phím SHIFT, CTRL, ALT và None , có thể kiểm tra kết hợp các phím bằng toán tử OR ‘|’. Ví dụ: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 132 - Xử lý sự kiện KeyDown, KeyUp:  Khai báo hàm:  Hàm xử lý: 1.4. Ví dụ về xử lý sự kiện bàn phím - Tạo form và thiết kế giao diện như sau: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 133 - Khai báo các sự kiện KeyPress, KeyDown, KeyUp và viết code: - Chạy ứng dụng và nhấn thử các phím, xem kết quả: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 134 2. Sự kiện chuột (Mouse) - Các sự kiện về chuột bao gồm:  MouseClick: click chuột lên Form/Control  MouseDoubleClick: nhấp đúp chuột trên form  MouseDown: nhấn phím chuột  MouseMove: con trỏ chuột di chuyển  MouseUp: nhả phím chuột  MouseWheel: cuộn nút giữa chuột  MouseEnter: con trỏ chuột đi vào phạm vi điều khiển  MouseHover: con trỏ chuột dao động trên điều khiển  MouseLeave: con trỏ chuột rời khỏi điều khiển - Các hàm xử lý sự kiện chuột (MouseClick, MouseDoubleClick, MouseDown, MouseUp, MouseMove) nhận vào đối số là đối tượng của lớp MouseEventArgs, kế thừa từ lớp System.EventArgs - Lớp MouseEventArgs bao gồm các thuộc tính chứa các thông tin liên quan đến các sự kiện chuột như phím nào của chuột được nhấn, vị trí con trỏ chuột,... - Một số thuộc tính của lớp MouseEventArgs:  Button: cho biết nút nào của chuột được nhấn Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 135  Clicks: số lần nhấn phím chuột  X: tọa độ x của vị trí con trỏ chuột  Y; tọa độ y của vị trí con trỏ chuột  Location: vị trí con trỏ chuột theo Point - Khai báo và xử lý sự kiện chuột trên form: - Viết code xử lý sự kiện: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 136 - Ví dụ sử dụng chuột di chuyển đối tượng trên form  Thiết kế giao diện như sau:  Khai báo các hàm xử lý sự kiện MouseDown, MouseUp, MouseMove trên pictureBox1: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 137  Viết code xử lý: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 138  Biên dịch và chạy chương trình, dùng chuột rê quả bóng thả vào hình chữ nhật màu xanh, nhả chuột, xem kết quả Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 139 Chương VI: MẢNG – CHUỖI MỤC TIÊU  Mô tả, khởi tạo và sử dụng thành thạo kiểu dữ liệu mảng trong lập trình  Mô tả, khởi tạo và sử dụng thành thạo các kiểu dữ liệu tập hợp trong .Net  Mô tả, khởi tạo và sử dụng thành thạo kiểu dữ liệu chuỗi trong lập trình  Sử dụng thành thạo lớp StringBuilder khi thao tác động với chuỗi 1. Mảng 1.1. Giới thiệu về mảng - Mảng là một tập hợp có thứ tự của những đối tượng có cùng một kiểu dữ liệu. - Các phần tử trong mảng được truy xuất theo tên và vị trí, chỉ số bắt đầu bằng zero. Ví dụ: mảng số nguyên có tên là c, gồm 12 phần tử: - Trong C#, mảng là kiểu dữ liệu tham chiếu, được xem là một đối tượng bao gồm các phương thức, thuộc tính - Có nhiều loại mảng: mảng một chiều, mảng nhiều chiều, - Trong ngôn ngữ C#, những đối tượng Array là đối tượng của kiểu System.Array - Các thuộc tính cơ bản của class Array:  Length: thuộc tính chiều dài của mảng Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 140  Rank: thuộc tính số chiều của mảng - Các phương thức cơ bản của class Array:  BinarySearch(): tìm kiếm trên mảng một chiều đã sắp thứ tự.  Clear(): thiết lập các thành phần của mảng về 0 hay null.  Copy(): sao chép một vùng của mảng vào mảng khác.  Reverse(): đảo thứ tự của các thành phần trong mảng một chiều  Sort(): sắp xếp giá trị trong mảng một chiều  GetLowerBound(): trả về cận dưới của chiều xác định trong mảng  GetUpperBound(): trả về cận trên của chiều xác định trong mảng  SetValue(): thiết lập giá trị cho một thành phần xác định trong mảng. 1.2. Khai báo mảng - Cú pháp: type[ ] array-name;  Ví dụ: int [] pins; - Khai báo và cấp phát vùng nhớ cho mảng với từ khóa new:  Ví dụ: int [] pins= new int [4]; //tạo mảng số nguyên gồm 4 phần tử - Khai báo và khởi tạo các phần tử mảng:  Ví dụ: string [ ] arrColors = { "Red", "Green", "Blue" }; int [ ] pins = new int [4]{ 9, 3, 7, 2 }; Random r = new Random (); int [ ] pins = new int [4] { r.Next() % 10, r.Next() % 10, r.Next() % 10, r.Next() % 10 }; 1.3. Làm việc với mảng Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 141 - Xác định số phần tử mảng: sử dụng thuộc tính Length  Ví dụ: int size = arrayInt.Length; - Sắp xếp mảng: nếu các thành phần của mảng là kiểu định nghĩa trước (predefined types), ta có thể sắp xếp tăng dần bằng cách gọi phương thức static Array.Sort()  Ví dụ: int [] arrayInt = { 5, 7,3, 8, 2 }: Array.Sort (arrayInt ); Kết quả: thứ tự các phần tử trong mảng arrayInt sẽ là 2, 3, 5, 7, 8 - Duyệt mảng:  Duyệt từng phần tử dựa vào chỉ số như C++:  Dùng lệnh foreach duyệt qua từng phần tử trong mảng Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 142 1.4. Truyền mảng cho phương thức - Truyền mảng như tham số cho phương thức bằng cách truyền vào tên của mảng (không có ngoặc [ ]) - Mảng luôn được truyền bằng tham chiếu  Ví dụ: o Trong hàm Test, sau lời gọi ModifyArray, mảng array sẽ chứa các phần tử {2, 4, 6, 8, 10} - Truyền mảng bằng tham trị:  Sự thay đổi giá trị các phần tử mảng trong phương thức sẽ ảnh hưởng đến đối tượng ngoài phương thức  Sự thay đổi tham chiếu của biến trong phương thức không ảnh hưởng đến đối tượng ngoài phương thức.  Ví dụ: - Truyền mảng bằng tham chiếu  Sự thay đổi tham chiếu của biến trong phương thức sẽ ảnh hưởng đến đối tượng ngoài phương thức.  Ví dụ: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 143 1.5. Mảng nhiều chiều - Mảng cần phải có hai hoặc nhiều chỉ số mới xác định được một phần tử của mảng được gọi là mảng nhiều chiều, phổ biến nhất là mảng hai chiều. - Mảng hai chiều là mảng cần hai chỉ số để xác định được một phần tử. Mảng hai chiều được chia thành hai loại: mảng hình chữ nhật và Zagged array. - Mảng hình chữ nhật: có dạng bảng, trong đó các hàng có cùng kích thước (có cùng số cột). Mỗi phần tử trong mảng được xác định qua hai chỉ số: hàng và cột theo quy ước: chỉ số thứ nhất là hàng, chỉ số thứ hai là cột của phần tử, đều bắt đầu = 0 - Khai báo mảng hai chiều hình chữ nhật theo cú pháp: type[ , ] array-name;  Ví dụ: int [ , ] arrInt = new int [2,3]; //khai báo và cấp phát vùng nhớ cho mảng số nguyên arrInt hai hàng, ba cột int [ , ] arrInt = { { 1, 2 }, { 3, 4 } }; //khai báo và khởi trị cho mảng số nguyên arrInt hai hàng, hai cột int [ , ] arrInt = new int [ , ] { {1,2}, {3,4}, {5,6}, {7,8}}; Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 144 //khai báo và khởi trị cho mảng số nguyên arrInt bốn hàng, hai cột string[ , ] arrString = { { "Lennon", "John" }, { "McCartney", "Paul" }, { "Harrison", "George" }, { "Starkey", "Richard" } }; //khai báo và khởi trị cho mảng chuỗi (string) arrString bốn hàng, hai cột - Duyệt mảng hai chiều:  Sử dụng phương thức GetLenght ( n ) để truy xuất số phần tử của mỗi chiều  Sử dụng hai vòng lặp for để duyệt qua các hàng và cột tương tự cú pháp C++ - Zagged array: là mảng hai chiều, trong đó mỗi hàng là một mảng và kích thước các phần tử trong mỗi hàng là không bằng nhau. Với kiểu mảng này, các hàng phải được khai báo tường minh.  Duyệt mảng Zagged array: sử dụng lệnh foreach Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 145 1.6. Các lớp tập hợp thông dụng 1.6.1. Giới thiệu - Mảng là kiểu dữ liệu cho phép chúng ta lưu trữ một tập hợp các phần tử một cách khá hiệu quả. Tuy nhiên, mảng cũng có một số hạn chế đối với người lập trình như:  Kích thước của mảng không thể thay đổi khi chương trình thực thi  Các phần tử lưu trong mảng phải có cùng kiểu dữ liệu  Khi thêm hoặc xóa các phần tử trong mảng, ta phải duyệt và dời các phần tử liên quan  ... - .NET framework cung cấp một thư viện các lớp với các phương thức cho phép thao tác với tập hợp một cách dễ dàng như:  Lớp ArrayList  Lớp Hashtable  Lớp SortedList  Lớp Queue  Lớp Stack  ... - Các lớp trên nằm trong namespace System.Collections. Do đó, để sử dụng các lớp tập hợp này, chúng ta phải khai báo: using System.Collections; 1.6.2. Lớp ArrayList: - Là lớp lưu trữ tập hợp các đối tượng theo kiểu mảng, các phần tử được truy xuất thông qua chỉ số. - Kích thước của ArrayList có thể thay đổi lúc thực thi. - ArrayList có thể lưu các phần tử thuộc các kiểu dữ liệu khác nhau. Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 146 - Kích thước mặc định của ArrayList là 0. Nếu các phần tử được lấp đầy, kích thước của ArrayList sẽ tự động tăng gấp đôi. - ArrayList cho phép lưu giá trị null cũng như giá trị trùng lặp. - Một số phương thức của lớp ArrayList:  Add: thêm một phần tử vào cuối danh sách  Insert: chèn một phần tử vào danh sách tại vị trí được chỉ định  Remove: xóa phần tử khỏi danh dách  RemoveAt: xóa phần tử khỏi danh sách theo vị trí  Contains: kiểm tra một phần tử có thuộc danh sách hay không (True: có, False: không)  IndexOf: trả về chỉ số của một phần tử trong danh sách  Sort: sắp xếp danh sách đối với những kiểu dữ liệu định nghĩa trước - Một số thuộc tính của lớp ArrayList:  Count: số phần tử trong danh sách  Capacity: số phần tử mà ArrayList có thể chứa - Ví dụ sử dụng ArrayList: Kết quả 1.6.3. Lớp SortedList - Hashtable: - SortedList: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 147  Là lớp danh sách kiểu từ điển, trong đó mỗi phần tử chứa trong nó được xác định thông qua hai trường Key và Value.  Các phần tử chứa trong SortedList sẽ tự động được xếp thứ tự dựa vào trường Key - Lớp Hashtable: tương tự SortedList, nhưng các phần tử không được tự động sắp xếp do đó thao tác trên Hashtable nhanh hơn so với SortedList. - Ví dụ sử dụng SortedList: 1.6.4. Lớp Stack: - Là loại danh sách mà các phần tử được tổ chức như một ngăn xếp theo thứ tự LIFO (LastIn First Out) - Thao tác thêm phần tử vào Stack và lấy phần tử ra khỏi Stack đều được thực hiện tại một đầu của danh sách. - Ví dụ sử dụng Stack: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 148 1.6.5. Lớp Queue: - Là loại danh sách mà các phần tử được tổ chức như một ngăn xếp theo thứ tự FIFO (First In First Out) - Các phần tử được thêm vào cuối danh sách và được lấy ra từ đầu danh sách - Ví dụ sử dụng Queue: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 149 2. Chuỗi (String) 2.1. Giới thiệu - Chuỗi là một dãy các ký tự Unicode liên tiếp nhau trong bộ nhớ và không thể thay đổi. Vì vậy, các phương thức áp dụng lên chuỗi không làm thay đổi nội dung bản thân chuỗi gốc mà chỉ có thể trả về một chuỗi mới. - Trong .NET, chuỗi là kiểu dữ liệu tham chiếu, mỗi chuỗi là một đối tượng của lớp string. - .Net Framework còn cung cấp lớp System.String là lớp được thiết kế để lưu trữ chuỗi, bao gồm các phương thức và thuộc tính, trong đó có rất nhiều các phương thức static cho phép người lập trình có thể thao tác và xử lý chuỗi một cách dễ dàng. - Một số ký hiệu chuỗi đặc biệt:  Ký hiệu \ : thường đặt trước các kí tự đặc biệt để hiển thị chúng, như: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 150  Ví dụ:  Ký hiệu @:  Dùng đặt trước tên biến khi tên biến trùng với từ khóa trong C#. Ví dụ: int @new = 10;  Dùng để thay thế ký tự \ để cách viết tự nhiên hơn Ví dụ: o Thay vì viết: string path = “D:\\Baitap”; o Ta có thể viết: string path = @”D:\Baitap”; o Thay vì viết: string literalTwo = "Line One\nLine Two"; Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 151 o Ta có thể viết: string literalTwo = @"Line One Line Two"; : 2.2. Phương thức khởi tạo của lớp string (string constructor) - Lớp string cung cấp tám phương thức khởi tạo cho phép tạo chuỗi với nhiều cách khác nhau. - Ví dụ sử dụng phương thức thiết lập của class string: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 152 2.3. Các phương thức của lớp String 2.3.1. Phương thức static (public static): - Compare: so sánh 2 chuỗi (,=?) - Concat: nối 2 chuỗi - Copy: tạo một bản sao của một chuỗi - Equals: true/false cho biết hai chuỗi có bằng nhau hay không - Format: định dạng xuất cho chuỗi - Join: ghép nối chuỗi từ một mảng chuỗi 2.3.2. Phương thức thành viên của lớp: - CompareTo: so sánh một chuỗi với chuỗi khác - EndsWith: true/false, xác định chuỗi kết thúc của một chuỗi? - StartsWith: true/false, xác định chuỗi bắt đầu của một chuỗi? - Equals: true/false, kiểm tra một chuỗi có bằng với một chuỗi khác? - Insert: chèn vào chuỗi một chuỗi khác - Remove: xóa các ký tự trong một chuỗi - LastIndexOf: vị trí tìm thấy của ký tự trong chuỗi từ cuối chuỗi - Split: tách chuỗi Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 153 - SubString: trả về một chuỗi con từ một chuỗi - ToCharArray: sao chép một số ký tự từ chuỗi sang mảng - ToLower: trả về chuỗi ký tự thường từ một chuỗi - ToUpper: trả về chuỗi ký tự hoa từ một chuỗi - Trim: trả về chuỗi đã được cắt bỏ khoảng trắng đầu và cuối từ một chuỗi - TrimStart: trả về chuỗi đã được cắt bỏ khoảng trắng đầu từ một chuỗi - TrimEnd: trả về chuỗi đã được cắt bỏ khoảng trắng cuối từ một chuỗi 2.4. Các thao tác với chuỗi 2.4.1. So sánh chuỗi: - Sử dụng toán tử == - Sử dụng phương thức Equal  Ví dụ: bool bRes = s1.Equal (s2);  bRes = true: s1 = s2  bRes = false: s1 != s2 - CompareTo  Ví dụ: int result = s1.CompareTo (s2);  result s2  result = 0: s1 = s2  result >0: s1 < s2 - Ví dụ về so sánh chuỗi: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 154 2.4.2. Trích chuỗi: sử dung phương thức SubString - SubString (int index): trả về chuỗi con bắt đầu từ vị trí index - SubString (int index, int leng): trả về chuỗi con gồm leng ký tự bắt đầu từ vị trí index - Ví dụ: 2.4.3. Nối chuỗi: - Sử dụng toán tử + - Sử dụng String.Concat (string s1, string s2) - Ví dụ: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 155 2.4.4. Tìm chuỗi con: Một số phương thức xác định vị trí chuỗi con/ký tự trong chuỗi: - LastIndexOf: vị trí xuất hiện cuối cùng của 1 chuỗi con hoặc kí tự trong chuỗi - LastIndexOfAny: vị trí xuất hiện cuối cùng của bất kì 1 hoặc 1 tập kí tự trong chuỗi - IndexOf: vị trí xuất hiện đầu tiên của 1 chuỗi con hoặc kí tự trong chuỗi - IndexOfAny: vị trí xuất hiện đầu tiên của bất kì 1 hoặc 1 tập kí tự trong chuỗi  Cú pháp: public int IndexOfAny ( char [] anyOf, int startIndex, int count )  Ví dụ: const string value1 = "Darth is my enemy."; const string value2 = "Visual Basic is hard."; int index1 = value1.IndexOfAny(new char[] { 'e', 'B' }); string s1 = value1.Substring(index1); //s1 = “enemy.” int index2 = value2.IndexOfAny(new char[] { 'e', 'B' }); string s2 = value2.Substring(index2); //s2 = “Basic is hard.” 2.4.5. Thay thế chuỗi con trong chuỗi: - Sử dụng phương thức Replace(string oldValue, string newValue) 2.4.6. Loại bỏ khoảng trắng / ký tự trong chuỗi Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 156 - Trim:trả về chuỗi đã loại bỏ các ký tự trắng hoặc các ký tự nằm trong mảng tham số - TrimStart: trả về chuỗi đã loại bỏ các ký tự trắng đầu chuỗi - TrimEnd: trả về chuỗi đã loại bỏ các ký tự trắng cuối chuỗi - Ví dụ: 2.4.7. Loại bỏ chuỗi con trong chuỗi: sử dung phương thức Remove - Remove (int index) Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 157 - Remove (int index, int count) - Ví dụ: 2.4.8. Tách chuỗi vào mảng: sử dụng phương thức Split - Ví dụ: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 158 2.4.9. Ráp chuỗi từ mảng: sử dụng phương thức Join - Ví dụ: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 159 2.5. Lớp StringBuilder Lớp String cung cấp rất nhiều phương thức cho phép xử lý chuỗi, tuy nhiên vẫn hạn chế do không thể thay đổi động nội dung và kích thước chuỗi. Để khắc phục nhược điểm này của lớp string, .Net Framework cung cấp lớp StringBuilder cho phép tạo, thao tác và xử lý đối với chuỗi khi chương trình thực thi. - Khai báo và khởi tạo đối tượng StringBuilder::  StringBuilder sb = new StringBuilder();  StringBuilder sb = new StringBuilder(int leng)  StringBuilder sb = new StringBuilder(string s)  StringBuilder sb = new StringBuilder(string s, int leng)  ... - Một số thuộc tính của class StringBuilder: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 160  Lenght: chiều dài hiện tại của chuỗi  Capacity: dung lượng tối đa mà chuỗi có thể chứa. - Một số phương thức của class StringBuilder:  Append: nối một chuỗi vào cuối chuỗi  AppendFormat: định dạng chuỗi khi nối vào  Insert: chèn một chuỗi vào cuối chuỗi  Replace: thay thế tất cả thể hiện của một ký tự bằng các ký tự khác  EnsureCapacity: đảm bảo (thiết lập lại) kích thước hiện tại mà đối tương StringBuilder có thể chứa. - Các thao tác với class StringBuilder:  Ví dụ thay đổi kích thước chuỗi khi chương trình thực thi, sử dụng phương thức EnsureCapacity: - Ví dụ nối chuỗi sử dụng phương thức Append: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 161  Ví dụ sử dụng phương thức AppendFormat: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 162  Ví dụ sử dụng phương thức Insert, Remove: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 163  Ví dụ sử dụng phương thức Replace: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 164 Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 165 Chương VII: LÀM VIỆC VỚI FILE VÀ THƯ MỤC MỤC TIÊU o Tạo, đọc, ghi và cập nhật được file o Sử dụng được lớp File và Directory để truy xuất được thông tin về file và thư mục lưu trữ trên máy tính o Thao tác thành thạo khi truy cập file tuần tự o Sử dụng được các lớp FileStream, StreamReader, StreamWriter để đọc và ghi file text o Sử dụng được lớp FileStream và BinaryFormater để đọc và ghi các đối tượng vào file 1. Lớp File, Directory và Stream 1.1. Giới thiệu: - Khi muốn đọc hay ghi dữ liệu vào/ra tập tin hay muốn truyền dữ liệu từ máy này sang máy khác, ta phải tổ chức dữ liệu theo cấu trúc tuần tự các byte hay các gói tin . Điều này dễ liên tưởng dữ liệu như là các luồng dữ liệu chảy từ từ nguồn đến đích. - Thư viện .NET Framework cung cấp lớp Stream và các lớp kế thừa) để chương trình có thể sử dụng trong các thao tác nhập xuất dữ liệu như đọc/ghi tập tin, truyền dữ liệu qua mạng - Một số lớp Stream thông dụng:  Stream: Lớp trừu tượng, cung cấp chức năng đọc/ghi dữ liệu theo bye  BinaryReader: Đọc dữ liệu nhị phân  BinaryWriter: Ghi dữ liệu nhị phân  File, FileInfo, Directory, DirectoryInfo: cung cấp các phương thức cho phép thao tác với tập tin và thư mục như tạo, xóa, đổi tên, liệt kê file và thư mục,...  FileStream: Đọc/ ghi tập tin theo cơ chế đồng bộ / bất đồng bộ, mặc định là đồng bộ.  TextReader, TextWriter: lớp trừu tượng cho phép đọc, ghi ký tự  StringReader, StringWriter: kế thừa từ TextReader, TextWriter, cài đặt thêm các phương thức đọc, ghi chuỗi. 1.2. Lớp File: - Một số phương thức static của class File:  AppentText: ghi nội dung văn bản vào cuối file  Copy: sao chép file  CreateText: tạo file văn bản Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 166  Delete: Xóa file  Exists: kiểm tra sự tồn tại của file  GetCreationTime: trả về đối tượng DateTime là thời điểm file được tạo  GetLastAccessTime: trả về đối tượng DateTime là lần cuối cùng truy cập file  GetLastWriteTime: trả về đối tượng DateTime là lần cuối cùng cập nhật nội dung file  Move: di chuyển file  Open: mở file  OpenRead: mở file chỉ đọc  OpenText: mở file văn bản  OpenWrite: mở file để ghi 1.3. Lớp Directory: - Một số phương thức của class Directory:  CreateDirectory: tạo thư mục  Delete: Xóa thư mục  Exists: kiểm tra sự tồn tại của thư mục  GetCreationTime: trả về đối tượng DateTime là thời điểm thư mục được tạo  GetLastAccessTime: trả về đối tượng DateTime là lần cuối cùng truy cập thư mục  GetLastWriteTime: trả về đối tượng DateTime là lần cuối cùng cập nhật nội dung thư mục  Move: di chuyển thư mục 2. Làm việc với file và thư mục 2.1. Đọc, ghi tập tin nhị phân: - Sử dụng lớp cơ sở Stream. Lớp Stream có rất nhiều phương thức nhưng quan trọng nhất là năm phương thức Read(), Write(), BeginRead(), BeginWrite() và Flush(). - Thực hiện như sau:  Tạo đối tượng Stream để đọc hoặc ghi  Sử dụng phương thức File.OpenRead để đọc và File.OpenWrite để ghi vào tập tin  Ví dụ: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 167 2.2. Đọc, ghi tập tin văn bản: Sử dụng hai lớp StreamReader và StreamWriter - StreamReader: dọc tập tin với các hàm Read, ReadLine - StreamWriter: ghi vào tập tìn với các hàm Write, WriteLine - Ví dụ: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 168 2.3. Tạo, xóa, di chuyển file: Sử dụng các phương thức static của lớp File: - File.Create( "file_name" ); - File.Delete( "file_name" ); - File.Move ( "source_file" , "dest_file" ) 2.4. Tạo, xóa, di chuyển thư mục: Sử dụng các phương thức static của lớp Directory: - Directory.CreateDirectory ( "dir_name" ); - Directory.Delete( "dir_name" ); - Directory.Move ( "source_dir" , "dest_dir") 2.5. Truy xuất thông tin của file: Sử dụng các phương thức static của lớp File: - File.GetCreationTime("file_name"); - File.GetLastAccessTime("file_name"); - File.GetAttributes("file_name"); - File. GetLastWriteTime ( "file_name"); Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 169 2.6. Truy xuất thông tin của thư mục: Sử dụng các phương thức static của lớp Directory - Directory.GetCreationTime("dir_name"); - Directory.GetLastAccessTime("dir_name"); - Directory.GetAttributes("dir_name"); - Directory.GetLastWriteTime( "dir_name" ); 2.7. Liệt kê file và thư mục con trong thư mục: Sử dụng các phương thức static của lớp Directory - Directory.GetFiles ("dir_name"); - Directory.GetDirectories ("dir_name"); - Ví dụ sử dụng class File và Directory truy xuất và liệt kê thông tin file và thư mục:  Thiết kế giao diện:  Viết code: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 170  Khai báo và viết code cho sự kiện KeyDown trên textbox txtInput: Bài giảng Lập trình giao diện ThS. Nguyễn Thị Mai Trang 171 3. Serialization - Serialize là một quá trình chuyển đổi một cấu trúc dữ liệu hoặc đối tượng thành một định dạng có thể lưu trữ được vào file, bộ nhớ, hoặc vận chuyển thông qua mạng. Ví dụ: ta có thể tạo một đối tượng hình tròn và vẽ trên giao diện chương trình, sau đó lưu thành file. - Deserialization:quá trình phục hồi dữ liệu lưu trong file trở lại tr

Các file đính kèm theo tài liệu này:

  • pdfltgd2015full_0242.pdf
Tài liệu liên quan