Tài liệu các giải pháp lập trình C#

Các giải pháp lập trình C# khảo sát chiều rộng của thư viện lớp .NET Framework và cung cấp giải pháp cụ thể cho các vấn đề thường gặp. Mỗi giải pháp được trình bày theo dạng “vấn đề/giải pháp” một cách ngắn gọn và kèm theo là các ví dụ mẫu.CCác giải pháp lập trình C# không nhằm mục đích hướng dẫn bạn cách lập trình C#. Tuy vậy, ngay cả khi mới làm quen với lập trình ứng dụng được xây dựng trên .NET Framework với C#, bạn cũng sẽ nhận thấy quyển sách này là một tài nguyên vô giá

pdf706 trang | Chia sẻ: longpd | Lượt xem: 2847 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Tài liệu các giải pháp lập trình C#, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1 2tổng hợp và biên dịch Nguyễn Ngọc Bình Phương - Thái Thanh Phong cùng sự cộng tác của Nguyễn Thanh Nhân - Trần Lê Vĩnh Phong Nguyễn Quang Nam - Đinh Phan Chí Tâm Bùi Minh Khoa - Lê Ngọc Sơn Thái Kim Phụng - Lê Trần Nhật Quỳnh Chịu trách nhiệm xuất bản: TS. Nguyễn Xuân Thủy Biên tập: Hồ Nguyễn Thị Thanh Thúy Trình bày bìa: Nguyễn Thị Thanh Thủy Chế bản & Sửa bản in: Nguyễn Ngọc Bình Phương Nhà sách Đ t Vi tấ ệ Địa chỉ: 225 Nguyễn Tri Phương, Q.5, TP. Hồ Chí Minh Điện thoại: (08) 2 652 039 E-mail: datviet@dvpub.com.vn 3Website: www.dvpub.com.vn 4Nguyễn Ngọc Bình Phương - Thái Thanh Phong tổng hợp & biên dịch   5NHÀ XUẤT BẢN GIAO THÔNG VẬN TẢI 6 7LỜI NÓI ĐẦU ác giải pháp lập trình C# khảo sát chiều rộng của thư viện lớp .NET Framework và cung cấp giải pháp cụ thể cho các vấn đề thường gặp. Mỗi giải pháp được trình bày theo dạng “vấn đề/giải pháp” một cách ngắn gọn và kèm theo là các ví dụ mẫu. C Các giải pháp lập trình C# không nhằm mục đích hướng dẫn bạn cách lập trình C#. Tuy vậy, ngay cả khi mới làm quen với lập trình ứng dụng được xây dựng trên .NET Framework với C#, bạn cũng sẽ nhận thấy quyển sách này là một tài nguyên vô giá. Ở mức lý tưởng, khi bạn đối mặt với một vấn đề, quyển sách này sẽ cung cấp một giải pháp—hay ít nhất nó sẽ gợi cho bạn hướng đi đúng. Ngay cả nếu bạn chỉ muốn mở rộng kiến thức của mình về thư viện lớp .NET, Các giải pháp lập trình C# cũng là một tài liệu rất hữu ích. Bạn không thể trở nên thành thạo C# và các lớp trong thư viện lớp .NET nếu chỉ đơn thuần đọc về chúng, bạn phải sử dụng và thử nghiệm chúng bằng cách viết thật nhiều chương trình. Cấu trúc và nội dung của quyển sách này cũng như tính khả thi trong thế giới thực của các giải pháp được đưa ra sẽ cung cấp điểm khởi đầu hoàn hảo, để từ đó làm bàn đạp cho việc thử nghiệm của chính bạn. Phần mã lệnh trong quyển sách này đã được viết và chạy thử nghiệm trên phiên bản 1.1 của .NET Framework. Trong nhiều trường hợp, bạn sẽ nhận thấy ví dụ mẫu này cũng sẽ chạy trên phiên bản 1.0 hay 2.0 của .NET Framework, tuy nhiên điều này chưa được thử nghiệm. Chúng tôi xin chân thành cảm ơn các bạn Nguyễn Thanh Nhân, Trần Lê Vĩnh Phong, Nguyễn Quang Nam, Đinh Phan Chí Tâm, Bùi Minh Khoa, Lê Ngọc Sơn, Thái Kim Phụng, và Lê Trần Nhật Quỳnh đã có những đóng góp LỜI NÓI ĐẦU 8quý báu cho quyển sách; cảm ơn Nhà xuất bản Giao thông Vận tải và Nhà sách Đất Việt đã tạo điều kiện cho quyển sách này đến với bạn đọc. Do lần đầu tiên xuất bản nên quyển sách này khó tránh khỏi những thiếu sót. Rất mong nhận được ý kiến đóng góp và nhận xét của các bạn để lần tái bản sau được hoàn thiện hơn. Trân trọng cảm ơn 9 10 CẤU TRÚC CỦA SÁCH Quyển sách này được chia thành 17 chương, mỗi chương tập trung vào một chủ đề cụ thể trong quá trình tạo các giải pháp C#. CẤU TRÚC CỦA SÁCH Chương 1: PHÁT TRIỂN ỨNG DỤNG Chương 2: THAO TÁC DỮ LIỆU Chương 3: MIỀN ỨNG DỤNG, CƠ CHẾ PHẢN CHIẾU, VÀ SIÊU DỮ LIỆU Chương 4: TIỂU TRÌNH, TIẾN TRÌNH, VÀ SỰ ĐỒNG BỘ Chương 5: XML Chương 6: WINDOWS FORM Chương 7: ASP.NET VÀ WEB FORM Chương 8: ĐỒ HỌA, ĐA PHƯƠNG TIỆN, VÀ IN ẤN Chương 9: FILE, THƯ MỤC, VÀ I/O Chương 10: CƠ SỞ DỮ LIỆU Chương 11: LẬP TRÌNH MẠNG Chương 12: DỊCH VỤ WEB XML VÀ REMOTING Chương 13: BẢO MẬT Chương 14: MẬT MÃ Chương 15: KHẢ NĂNG LIÊN TÁC MÃ LỆNH KHÔNG-ĐƯỢC-QUẢN-LÝ Chương 16: CÁC GIAO DIỆN VÀ MẪU THÔNG DỤNG Chương 17: SỰ HÒA HỢP VỚI MÔI TRƯỜNG WINDOWS 11 12 QUY ƯỚC Quyển sách này sử dụng các quy ước như sau: Về font chữ  Chữ in nghiêng—Dùng cho tên riêng, tên file và thư mục, và đôi khi để nhấn mạnh.  Chữ với bề rộng cố định (font Courie New)—Dùng cho các đoạn chương trình, và cho các phần tử mã lệnh như câu lệnh, tùy chọn, biến, đặc tính, khóa, hàm, kiểu, lớp, không gian tên, phương thức, module, thuộc tính, thông số, giá trị, đối tượng, sự kiện, phương thức thụ lý sự kiện, thẻ XML, thẻ HTML, nội dung file, và kết xuất từ các câu lệnh.  Chữ in đậm với bề rộng cố định—Dùng trong các đoạn chương trình để nêu bật một phần quan trọng của mã lệnh hoặc dùng cho các dòng lệnh, câu lệnh SQL. Về ký hiệu Vấn đề Thủ thuật QUY ƯỚC 13 Giải pháp Ghi chú 14 15 YÊU CẦU VỀ HỆ THỐNG Để chạy được những ví dụ mẫu đi kèm quyển sách này, bạn sẽ cần những phần mềm sau đây:  Microsoft .NET Framework SDK version 1.1  Microsoft Visual Studio .NET 2003  Microsoft Windows 2000, Windows XP, hoặc Microsoft Windows Server 2003  Microsoft SQL Server 2000 hoặc MSDE đối với các mục trong chương 10  Microsoft Internet Information Services (IIS) đối với một số mục trong chương 7 và chương 12 Yêu cầu tối thiểu về phần cứng là bộ vi xử lý Pentium II 450 MHz, với dung lượng RAM tối thiểu là 128 MB nếu bạn đang sử dụng Microsoft Windows 2000, và là 256 MB nếu bạn đang sử dụng Windows XP, Windows 2000 Server, hay Windows Server 2003. Bạn cần khoảng 5 GB dung lượng đĩa cứng còn trống để cài đặt Visual Studio .NET 2003. Những giá trị này là mức tối thiểu, quá trình phát triển sẽ dễ dàng hơn trên một hệ thống với dung lượng RAM lớn và đĩa cứng còn trống nhiều. Mặc dù bản hiện thực .NET Framework cho Windows của Microsoft là tiêu điểm của quyển sách này, một mục tiêu quan trọng là cấp một YÊU CẦU VỀ HỆ THỐNG 16 tài nguyên hữu ích cho những lập trình viên C# không quan tâm đến nền mà họ đang làm việc hoặc công cụ mà họ truy xuất. Ngoài những chủ đề đặc biệt không được hỗ trợ trên tất cả nền .NET (như Windows Form, ADO.NET, và ASP.NET), nhiều ví dụ mẫu trong quyển sách này đều hợp lệ trên tất cả bản hiện thực .NET. 17 18 CÁCH SỬ DỤNG ĐĨA CD ã lệnh được cấp ở dạng tập các giải pháp và dự án Visual Studio .NET 2003, được tổ chức theo chương và số đề mục. Mỗi chương là một giải pháp độc lập, và mỗi đề mục là một dự án độc lập bên trong giải pháp của chương. Một vài đề mục trong chương 11 và chương 12 trình bày về lập trình mạng gồm những dự án độc lập có chứa các phần client và server trong giải pháp của đề mục. M Mặc dù tất cả những ví dụ mẫu được cấp ở dạng dự án Visual Studio .NET, nhưng hầu hết đều bao gồm một file nguồn đơn mà bạn có thể biên dịch và chạy độc lập với Visual Studio .NET. Nếu không sử dụng Visual Studio .NET 2003, bạn có thể định vị mã nguồn cho một đề mục cụ thể bằng cách duyệt cấu trúc thư mục của ví dụ mẫu. Ví dụ, để tìm mã nguồn cho mục 4.3, bạn sẽ tìm nó trong thư mục Chuong04\04-03. Nếu sử dụng trình biên dịch dòng lệnh thì phải bảo đảm rằng bạn đã thêm tham chiếu đến tất cả các assembly cần thiết. Một số ứng dụng mẫu yêu cầu các đối số dòng lệnh (sẽ được mô tả trong phần văn bản của đề mục). Nếu sử dụng Visual Studio .NET, bạn có thể nhập các đối số này trong Project Properties (mục Debugging của phần Configuration Properties). Nhớ rằng, nếu cần nhập tên thư mục hay file có chứa khoảng trắng thì bạn cần đặt tên đầy đủ trong dấu nháy kép. Tất cả ví dụ truy xuất dữ liệu ADO.NET được tạo với SQL Server 2000. Chúng cũng có thể được sử dụng với SQL Server 7 và MSDE. CÁCH SỬ DỤNG ĐĨA CD 19 Visual Studio .NET có chứa các kịch bản SQL để cài đặt các cơ sở dữ liệu mẫu Northwind và Pubs nếu chúng chưa hiện diện (các file instnwnd.sql và instpubs.sql trong thư mục C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\ v1.1\Samples\Setup). Bạn có thể chạy các kịch bản này bằng Query Analyzer (với SQL Server) hay OSQL.exe (với MSDE). Để sử dụng các đề mục trong chương 7 và chương 12, bạn cần chép chúng vào thư mục I:\CSharp\ (đường dẫn này là mã cứng trong các file dự án Visual Studio .NET). Bạn cũng sẽ cần tạo một thư mục ảo có tên là CSharp ánh xạ đến I:\CSharp. Bạn có thể cài đặt phép ánh xạ này bằng IIS Manager. Thực hiện theo các bước dưới đây: 1. Khởi chạy IIS Manager (chọn Start | Control Panel | Administrative Tools | Internet Information Services). 2. Khởi chạy Virtual Directory Wizard trong IIS Manager bằng cách nhắp phải vào Default Web Site và chọn New | Virtual Directory từ menu ngữ cảnh. 3. Nhắp Next để bắt đầu. Mẩu thông tin đầu tiên là bí danh CSharp. Nhắp Next để tiếp tục. 4. Mẩu thông tin thứ hai là thư mục vật lý I:\CSharp. Nhắp Next để tiếp tục. 5. Cửa sổ thuật sĩ cuối cùng cho phép bạn điều chỉnh quyền cho thư mục ảo. Bạn nên sử dụng các thiết lập mặc định. Nhắp Next. 6. Nhắp Finish để kết thúc trình thuật sĩ. Bạn sẽ thấy thư mục ảo này trong phần cây của IIS Manager. 7. Khai triển thư mục ảo CSharp trong IIS thành thư mục nằm trong CSharp\Chuong07\07-01. 8. Nhắp phải vào thư mục này, chọn Properties, rồi nhắp vào nút Create trong thẻ Directory để chuyển thư mục này thành thư mục ứng dụng Web. 9. Lặp lại bước 8 cho mỗi mục trong chương 7. 10. Theo trình tự đã được trình bày trong các bước 7-9, tạo thư mục ứng dụng Web cho các đề mục 12.2, 12.3, 12.4, và 12.6 trong chương 12. 20 MỤC LỤC LỜI NÓI ĐẦU ................................................................................................................................7 CẤU TRÚC CỦA SÁCH ..............................................................................................................10 QUY ƯỚC ...................................................................................................................................12 YÊU CẦU VỀ HỆ THỐNG .......................................................................................................... 15 CÁCH SỬ DỤNG ĐĨA CD ...........................................................................................................18 MỤC LỤC ....................................................................................................................................20 Chương 1: PHÁT TRIỂN ỨNG DỤNG 29 1. Tạo ứng dụng Console ........................................................................................... 31 2. Tạo ứng dụng dựa-trên-Windows ...........................................................................33 3. Tạo và sử dụng module .......................................................................................... 37 4. Tạo và sử dụng thư viện .........................................................................................39 5. Truy xuất các đối số dòng lệnh ............................................................................... 40 6. Chọn biên dịch một khối mã vào file thực thi ..........................................................42 7. Truy xuất một phần tử chương trình có tên trùng với một từ khóa ........................................................................................45 MỤC LỤC 21 8. Tạo và quản lý cặp khóa tên mạnh .........................................................................45 9. Tạo tên mạnh cho assembly ...................................................................................47 10. Xác minh một assembly tên mạnh không bị sửa đổi ............................................ 49 11. Hoãn việc ký assembly ......................................................................................... 50 12. Ký assembly với chữ ký số Authenticode ............................................................. 52 13. Tạo và thiết lập tin tưởng một SPC thử nghiệm ................................................... 54 14. Quản lý Global Assembly Cache .......................................................................... 56 15. Ngăn người khác dịch ngược mã nguồn của bạn ................................................ 56 Chương 2: THAO TÁC DỮ LIỆU 59 1. Thao tác chuỗi một cách hiệu quả .......................................................................... 61 2. Mã hóa chuỗi bằng các kiểu mã hóa ký tự ............................................................. 62 3. Chuyển các kiểu giá trị cơ bản thành mảng kiểu byte ............................................65 4. Mã hóa dữ liệu nhị phân thành văn bản ................................................................. 67 5. Sử dụng biểu thức chính quy để kiểm tra dữ liệu nhập ..........................................70 6. Sử dụng biểu thức chính quy đã được biên dịch ....................................................72 7. Tạo ngày và giờ từ chuỗi ........................................................................................ 75 8. Cộng, trừ, so sánh ngày giờ ................................................................................... 76 9. Sắp xếp một mảng hoặc một ArrayList ...................................................................78 10. Chép một tập hợp vào một mảng ......................................................................... 79 11. Tạo một tập hợp kiểu mạnh ..................................................................................80 12. Lưu một đối tượng khả-tuần-tự-hóa vào file .........................................................81 Chương 3: MIỀN ỨNG DỤNG, CƠ CHẾ PHẢN CHIẾU, VÀ SIÊU DỮ LIỆU 86 1. Tạo miền ứng dụng .................................................................................................88 2. Chuyển các đối tượng qua lại các miền ứng dụng .................................................90 3. Tránh nạp các assembly không cần thiết vào miền ứng dụng ............................... 91 4. Tạo kiểu không thể vượt qua biên miền ứng dụng .................................................92 5. Nạp assembly vào miền ứng dụng hiện hành ........................................................ 92 6. Thực thi assembly ở miền ứng dụng khác ............................................................. 94 7. Thể hiện hóa một kiểu trong miền ứng dụng khác ................................................. 95 8. Truyền dữ liệu giữa các miền ứng dụng ...............................................................101 9. Giải phóng assembly và miền ứng dụng .............................................................. 103 10. Truy xuất thông tin Type ..................................................................................... 104 11. Kiểm tra kiểu của một đối tượng .........................................................................106 12. Tạo một đối tượng bằng cơ chế phản chiếu .......................................................107 13. Tạo một đặc tính tùy biến ....................................................................................110 14. Sử dụng cơ chế phản chiếu để kiểm tra các đặc tính của một phần tử chương trình ...............................................................113 Chương 4: TIỂU TRÌNH, TIẾN TRÌNH, VÀ SỰ ĐỒNG BỘ 115 1. Thực thi phương thức với thread-pool ..................................................................117 2. Thực thi phương thức một cách bất đồng bộ ....................................................... 121 3. Thực thi phương thức bằng Timer ........................................................................129 4. Thực thi phương thức bằng cách ra hiệu đối tượng WaitHandle .........................132 5. Thực thi phương thức bằng tiểu trình mới ............................................................135 6. Điều khiển quá trình thực thi của một tiểu trình ....................................................137 22 7. Nhận biết khi nào một tiểu trình kết thúc .............................................................. 142 8. Đồng bộ hóa quá trình thực thi của nhiều tiểu trình ..............................................143 9. Tạo một đối tượng tập hợp có tính chất an-toàn-về-tiểu-trình ..............................148 10. Khởi chạy một tiến trình mới ...............................................................................149 11. Kết thúc một tiến trình .........................................................................................152 12. Bảo đảm chỉ có thể chạy một thể hiện của ứng dụng tại một thời điểm ............................................................ 154 Chương 5: XML 157 1. Hiển thị cấu trúc của một tài liệu XML trong TreeView .........................................159 2. Chèn thêm nút vào tài liệu XML ............................................................................164 3. Chèn thêm nút vào tài liệu XML một cách nhanh chóng ...................................... 166 4. Tìm một nút khi biết tên của nó .............................................................................169 5. Thu lấy các nút XML trong một không gian tên XML cụ thể ................................. 170 6. Tìm các phần tử với biểu thức XPath ................................................................... 172 7. Đọc và ghi XML mà không phải nạp toàn bộ tài liệu vào bộ nhớ ......................... 175 8. Xác nhận tính hợp lệ của một tài liệu XML dựa trên một Schema ....................... 178 9. Sử dụng XML Serialization với các đối tượng tùy biến ........................................ 184 10. Tạo XML Schema cho một lớp .NET .................................................................. 188 11. Tạo lớp từ một XML Schema ..............................................................................188 12. Thực hiện phép biến đổi XSL ..............................................................................189 Chương 6: WINDOWS FORM 193 1. Thêm điều kiểm vào form lúc thực thi ...................................................................195 2. Liên kết dữ liệu vào điều kiểm .............................................................................. 197 3. Xử lý tất cả các điều kiểm trên form ..................................................................... 199 4. Theo vết các form khả kiến trong một ứng dụng .................................................. 200 5. Tìm tất cả các form trong ứng dụng MDI ..............................................................201 6. Lưu trữ kích thước và vị trí của form .................................................................... 203 7. Buộc ListBox cuộn xuống ......................................................................................205 8. Chỉ cho phép nhập số vào TextBox ...................................................................... 206 9. Sử dụng ComboBox có tính năng auto-complete .................................................207 10. Sắp xếp ListView theo cột bất kỳ ........................................................................ 211 11. Liên kết menu ngữ cảnh vào điều kiểm ..............................................................213 12. Sử dụng một phần menu chính cho menu ngữ cảnh ......................................... 214 13. Tạo form đa ngôn ngữ ........................................................................................ 217 14. Tạo form không thể di chuyển được ...................................................................219 15. Làm cho form không đường viền có thể di chuyển được ...................................220 16. Tạo một icon động trong khay hệ thống ............................................................. 222 17. Xác nhận tính hợp lệ của đầu vào cho một điều kiểm ........................................223 18. Thực hiện thao tác kéo-và-thả ............................................................................226 19. Sử dụng trợ giúp cảm-ngữ-cảnh .........................................................................228 20. Áp dụng phong cách Windows XP ......................................................................229 21. Thay đổi độ đục của form ....................................................................................231 Chương 7: ASP.NET VÀ WEB FORM 234 23 1. Chuyển hướng người dùng sang trang khác ........................................................236 2. Duy trì trạng thái giữa các yêu cầu của trang .......................................................237 3. Tạo các biến thành viên có trạng thái cho trang ...................................................243 4. Đáp ứng các sự kiện
Tài liệu liên quan