TÌM HIỂU NGÔN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA phần 7
Số trang: 27
Loại file: pdf
Dung lượng: 510.16 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Lập trình với C#Gvhd: Nguyễn Tấn Trần Minh KhangDuyệt đệ qui trên các thư mục con Hàm GetSubDirectoryNodes() bắt đầu bằng việc gọi hàm GetDirectories() để nhận về một danh sách các đối tượng DirectoryInfo :private void GetSubDirectoryNodes( TreeNode
Nội dung trích xuất từ tài liệu:
TÌM HIỂU NGÔN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA phần 7Lập trình với C# Gvhd: Nguyễn Tấn Trần Minh KhangDuyệt đệ qui trên các thư mục conHàm GetSubDirectoryNodes() bắt đầu bằng việc gọi hàm GetDirectories() để nhậnvề một danh sách các đối tượng DirectoryInfo : private void GetSubDirectoryNodes( TreeNode parentNode, string fullName, bool getFileNames) { DirectoryInfo dir = new DirectoryInfo(fullName); DirectoryInfo[] dirSubs = dir.GetDirectories( );Ở đây ta thấy node truyền vào có tên là parentNode ( nút cha ), nghĩa là những nútsau này sẽ được xem là nút con của nó. Bạn sẽ rõ hơn khi tìm hiểu hết hàm này.Ta tiến hành duyệt qua danh sách các thư mục con dirSubs, bỏ qua các mục có trạngthái là ẩn ( Hidden ). foreach (Directory dirSub in dirSubs) { if ( (dirSub.Attributes & FileSystemAttributes.Hidden) != 0 ) { continue; }FileSystemAttributes là biến có kiểu enum, nó chứa một số giá trị như : Archive,Compressed, Encrypted, Hidden, Normal, ReadOnly …Nếu như mục hiện hànhkhông ở trạng thái ẩn, ta sẽ tạo ra một TreeNode mới với tham số là tên của nó. Sauđó Thêm nó vào nút cha parentNode : TreeNode subNode = new TreeNode(dirSub.Name); parentNode.Nodes.Add(subNode);Ta sẽ gọi lại đệ qui hàm GetDirectoriesNodes() để liệt kê hết mọi mục con trên thưnút hiện hành, với ba thông số : nút được chuyển vào như nút cha, tên đường dẫnđầy đủ của mục hiện hành và cờ trạng thái. GetSubDirectoryNodes(subNode,dirSub.FullName,getFileNames); Chú ý : Thuộc tính dirSubs.FullName sẽ trả về đường dẫn đầy đủ của mục hiện hành ( “C:dir1dir2file1” ), còn thuộc tính dirSubs.Name chỉ trả về tên của mục hiện hành ( “file1”). Khi ta tạo ra một nút con subNode, ta chỉ truyền cho nó tên của mục hiện hành, vì ta chỉ muốn hiển thị thị tên của nó trên cây. Còn khi ta gọi đệ qui hàm GetSubDirectoryNodes() thì ta cần truyền cho nó tên đường dẫn đầy đủ của mục hiện hành, để có thể liệt kê toàn bộ mục con cùa thực mục đang xét.Đến đây chắc bạn đã hiểu được sự phân cấp của cấu trúc cây và tại sao hàmGetSubDirectoryNodes() cần truyền có đối số FullName.Lấy về các tập tin trong thư mụcNếu biến cờ getFileNames là True thì ta sẽ tiến hành lấy về tất cả các tập tin thuộcthư mục. Để thực hiện ta gọi hàm GetFiles() của đối tượng DirectoryInfo, hàm nàysẽ trả về danh sách các đối tượng FileInfo. Ta sẽ duyệt qua danh sách này để lấy ra 123Lập trình với C# Gvhd: Nguyễn Tấn Trần Minh Khangtên của từng tập tin một, sau đó tạo ra một nút TreeNode với tên này, nút này sẽđược thêm vào nút cha parentNode hiện hành.13.1.2.3 Quản lý sự kiện trên điều khiển câyTrong ứng dụng này, chúng ta sẽ phải quản lý một số sự kiện. Đầu tiên là sự kiệnngười dùng nhấn lên ô CheckBox để chọn các tập tin hay thư mục ở cây bên phảihay nhấn các nút ở cây bên phải. Tiếp theo là các sự kiện nhấn vào Button ‘Cancel’,‘Copy’,’Delete’ hay ‘Clear’.Ta sẽ khảo sát sự kiện trên điều khiển cây trước.Sự kiện chọn một nút trên điều khiển cây bên tráiKhi người dùng muốn chọn một tập tin hay thư mục để chép hay xóa. Ứng với mỗilần chọn sẽ phát sinh ra một số sự kiện tương ứng. Ta sẽ bắt sự kiện AfterCheck củađiều khiển cây. Ta gõ vào các đoạn mã sau : tvwSource.AfterCheck += new TreeViewEventHandler( this.tvwSource_AfterCheck );Ta viết lệnh thực thi cho hàm bắt sự kiện AfterCheck có tên làtvwSource_AfterCheck, hàm này có hai tham số : đầu tiên là biến Sender chứathông tin về đối tượng phát sinh ra sự kiện, thứ hai là đối tượngTreeViewEventArgs chứa thông tin về sự kiện phát ra. Ta sẽ đánh dấu là chọn chothư mục được chọn và tất cả các tập tin hay thư mục con của thư mục đó thông quahàm SetCheck() : protected void tvwSource_AfterCheck ( object sender, System.Windows.Forms.TreeViewEventArgs e) { SetCheck(e.node,e.node.Checked); }Hàm SetCheck() sẽ tiến hành thực hiện đệ qui trên nút hiện hành, hàm gồm haitham số : nút cần đánh dấu và cờ xác định là đánh dấu hay bỏ đánh dấu chọn, nếuthuộc tính Count bằng không ( nghĩa là nút này là nút lá ) thì ta sẽ đánh dấu chọncho nút đó. Nếu không ta gọi đệ qui lại hàm SetCheck() : private void SetCheck(TreeNode node, bool check) { node.Checked = check; foreach (TreeNode n in node.Nodes) { if (node.Nodes.Count == 0) { node.Checked = check; } else { SetCheck(n,check); } } } 124Lập trình với C# Gvhd: Nguyễn Tấn Trần Minh KhangSự kiện chọn một nút trên điều khiển cây bên phảiKhi người dùng chọn một nút ở cây bên phải, ta sẽ phải cho hiện đường dẫn đầy đủcủa nút đó lên TextBox ở góc phíc trên bên phải. Ta sẽ bắt sự kiện AfterSelect củacây. Sự kiện này sẽ được gọi s ...
Nội dung trích xuất từ tài liệu:
TÌM HIỂU NGÔN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA phần 7Lập trình với C# Gvhd: Nguyễn Tấn Trần Minh KhangDuyệt đệ qui trên các thư mục conHàm GetSubDirectoryNodes() bắt đầu bằng việc gọi hàm GetDirectories() để nhậnvề một danh sách các đối tượng DirectoryInfo : private void GetSubDirectoryNodes( TreeNode parentNode, string fullName, bool getFileNames) { DirectoryInfo dir = new DirectoryInfo(fullName); DirectoryInfo[] dirSubs = dir.GetDirectories( );Ở đây ta thấy node truyền vào có tên là parentNode ( nút cha ), nghĩa là những nútsau này sẽ được xem là nút con của nó. Bạn sẽ rõ hơn khi tìm hiểu hết hàm này.Ta tiến hành duyệt qua danh sách các thư mục con dirSubs, bỏ qua các mục có trạngthái là ẩn ( Hidden ). foreach (Directory dirSub in dirSubs) { if ( (dirSub.Attributes & FileSystemAttributes.Hidden) != 0 ) { continue; }FileSystemAttributes là biến có kiểu enum, nó chứa một số giá trị như : Archive,Compressed, Encrypted, Hidden, Normal, ReadOnly …Nếu như mục hiện hànhkhông ở trạng thái ẩn, ta sẽ tạo ra một TreeNode mới với tham số là tên của nó. Sauđó Thêm nó vào nút cha parentNode : TreeNode subNode = new TreeNode(dirSub.Name); parentNode.Nodes.Add(subNode);Ta sẽ gọi lại đệ qui hàm GetDirectoriesNodes() để liệt kê hết mọi mục con trên thưnút hiện hành, với ba thông số : nút được chuyển vào như nút cha, tên đường dẫnđầy đủ của mục hiện hành và cờ trạng thái. GetSubDirectoryNodes(subNode,dirSub.FullName,getFileNames); Chú ý : Thuộc tính dirSubs.FullName sẽ trả về đường dẫn đầy đủ của mục hiện hành ( “C:dir1dir2file1” ), còn thuộc tính dirSubs.Name chỉ trả về tên của mục hiện hành ( “file1”). Khi ta tạo ra một nút con subNode, ta chỉ truyền cho nó tên của mục hiện hành, vì ta chỉ muốn hiển thị thị tên của nó trên cây. Còn khi ta gọi đệ qui hàm GetSubDirectoryNodes() thì ta cần truyền cho nó tên đường dẫn đầy đủ của mục hiện hành, để có thể liệt kê toàn bộ mục con cùa thực mục đang xét.Đến đây chắc bạn đã hiểu được sự phân cấp của cấu trúc cây và tại sao hàmGetSubDirectoryNodes() cần truyền có đối số FullName.Lấy về các tập tin trong thư mụcNếu biến cờ getFileNames là True thì ta sẽ tiến hành lấy về tất cả các tập tin thuộcthư mục. Để thực hiện ta gọi hàm GetFiles() của đối tượng DirectoryInfo, hàm nàysẽ trả về danh sách các đối tượng FileInfo. Ta sẽ duyệt qua danh sách này để lấy ra 123Lập trình với C# Gvhd: Nguyễn Tấn Trần Minh Khangtên của từng tập tin một, sau đó tạo ra một nút TreeNode với tên này, nút này sẽđược thêm vào nút cha parentNode hiện hành.13.1.2.3 Quản lý sự kiện trên điều khiển câyTrong ứng dụng này, chúng ta sẽ phải quản lý một số sự kiện. Đầu tiên là sự kiệnngười dùng nhấn lên ô CheckBox để chọn các tập tin hay thư mục ở cây bên phảihay nhấn các nút ở cây bên phải. Tiếp theo là các sự kiện nhấn vào Button ‘Cancel’,‘Copy’,’Delete’ hay ‘Clear’.Ta sẽ khảo sát sự kiện trên điều khiển cây trước.Sự kiện chọn một nút trên điều khiển cây bên tráiKhi người dùng muốn chọn một tập tin hay thư mục để chép hay xóa. Ứng với mỗilần chọn sẽ phát sinh ra một số sự kiện tương ứng. Ta sẽ bắt sự kiện AfterCheck củađiều khiển cây. Ta gõ vào các đoạn mã sau : tvwSource.AfterCheck += new TreeViewEventHandler( this.tvwSource_AfterCheck );Ta viết lệnh thực thi cho hàm bắt sự kiện AfterCheck có tên làtvwSource_AfterCheck, hàm này có hai tham số : đầu tiên là biến Sender chứathông tin về đối tượng phát sinh ra sự kiện, thứ hai là đối tượngTreeViewEventArgs chứa thông tin về sự kiện phát ra. Ta sẽ đánh dấu là chọn chothư mục được chọn và tất cả các tập tin hay thư mục con của thư mục đó thông quahàm SetCheck() : protected void tvwSource_AfterCheck ( object sender, System.Windows.Forms.TreeViewEventArgs e) { SetCheck(e.node,e.node.Checked); }Hàm SetCheck() sẽ tiến hành thực hiện đệ qui trên nút hiện hành, hàm gồm haitham số : nút cần đánh dấu và cờ xác định là đánh dấu hay bỏ đánh dấu chọn, nếuthuộc tính Count bằng không ( nghĩa là nút này là nút lá ) thì ta sẽ đánh dấu chọncho nút đó. Nếu không ta gọi đệ qui lại hàm SetCheck() : private void SetCheck(TreeNode node, bool check) { node.Checked = check; foreach (TreeNode n in node.Nodes) { if (node.Nodes.Count == 0) { node.Checked = check; } else { SetCheck(n,check); } } } 124Lập trình với C# Gvhd: Nguyễn Tấn Trần Minh KhangSự kiện chọn một nút trên điều khiển cây bên phảiKhi người dùng chọn một nút ở cây bên phải, ta sẽ phải cho hiện đường dẫn đầy đủcủa nút đó lên TextBox ở góc phíc trên bên phải. Ta sẽ bắt sự kiện AfterSelect củacây. Sự kiện này sẽ được gọi s ...
Tìm kiếm theo từ khóa liên quan:
tin học ứng dụng lập trình C# giáo trình C# thủ thuật máy tính mẹo hay cho windowsGợi ý tài liệu liên quan:
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 296 0 0 -
Làm việc với Read Only Domain Controllers
20 trang 282 0 0 -
Tài liệu bồi dưỡng giáo viên sử dụng SGK Tin học 10 Cánh diều (Định hướng Tin học ứng dụng)
61 trang 222 0 0 -
UltraISO chương trình ghi đĩa, tạo ổ đĩa ảo nhỏ gọn
10 trang 202 0 0 -
101 trang 198 1 0
-
Sửa lỗi các chức năng quan trọng của Win với ReEnable 2.0 Portable Edition
5 trang 198 0 0 -
Giáo Trình tin học căn bản - ĐH Marketing
166 trang 196 0 0 -
Hướng dẫn cách khắc phục lỗi màn hình xanh trong windows
7 trang 192 0 0 -
Tải video YouTube chất lượng gốc
4 trang 190 0 0 -
Giáo trình Bảo trì hệ thống và cài đặt phần mềm
68 trang 187 0 0