361
Chương 9: File, thư mục, và I/O
TreeView
rất thích hợp với cách tiếp cận này vì nó cung cấp sự kiện
BeforeExpand
(sự kiện
này phát sinh trước khi một cấp mới được hiển thị). Bạn có thể sử dụng một placeholder (như
dấu hoa thị hay nút rỗng) trong tất cả các nhánh chưa được thêm vào. Điều này cho phép bạn
thêm vào các phần của cây thư mục khi chúng được hiển thị.
Để sử dụng kiểu giải pháp này, bạn cần ba yếu tố sau:
•
Phương thức
Fill
—thêm một cấp mới vào một thư mục. Bạn sẽ sử dụng phương thức
này để thêm vào các cấp khi chúng được mở rộng.
•
Phương thức thụ lý sự kiện
Form.Load
—sử dụng
Fill
để tạo cây với cấp đầu tiên.
•
Phương thức thụ lý sự kiện
TreeView.BeforeExpand
—phản ứng khi người dùng mở
rộng một nút và gọi
Fill
nếu thông tin của thư mục này chưa được thêm.
Dưới đây là phần mã cho form:
using System;
using System.IO;
using System.Drawing;
using System.Windows.Forms;
public class DirectoryTree : System.Windows.Forms.Form {
private System.Windows.Forms.TreeView treeDirectory;
// (Bỏ qua phần mã designer.)
private void Fill(TreeNode dirNode) {
DirectoryInfo dir = new DirectoryInfo(dirNode.FullPath);
// Một ngoại lệ có thể bị ném nếu bạn không có
// đủ quyền thao tác trên file hay thư mục.
// Bạn có thể bắt và bỏ qua ngoại lệ này.
foreach (DirectoryInfo dirItem in dir.GetDirectories()) {
// Thêm nút giả cho thư mục.
TreeNode newNode = new TreeNode(dirItem.Name);
dirNode.Nodes.Add(newNode);
newNode.Nodes.Add("*");
}
}
private void DirectoryTree_Load(object sender, System.EventArgs e) {