Tải bản đầy đủ (.pdf) (6 trang)

hệ điều hành nguyễn văn hiệp bài 9 2 xây dựng ứng dụng duyệt xem hệ thống filesinhvienzone com

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (124.3 KB, 6 trang )

Trang 1

MÔN : HỆ ĐIỀU HÀNH
Bài thực hành số 9.2 : Xây dựng ứng dụng duyệt xem hệ thống file
I. Mục tiêu :
ƒ Giúp SV làm quen với việc sử dụng các class DriveInfo, Directory của .NET ₫ể
lập trình duyệt truy xuất danh sách các ổ ₫ĩa hiện có trên máy tính và duyệt ₫ọc
nội dung của thư mục bất kỳ của hệ thống file.
II. Nội dung :
ƒ Xây dựng ứng dụng Dialog Based cho phép người dùng duyệt xem hệ thống file
của máy.
ƒ Dịch và chạy chương trình.
ƒ Debug chương trình ₫ể tìm lỗi nếu có.
III. Chuẩn ₫ầu ra :
ƒ Sinh viên nắm vững và lập trình thành thạo các ₫oạn code sử dụng các class
DriveInfo, Directory của .NET ₫ể lập trình duyệt truy xuất danh sách các ổ ₫ĩa
hiện có trên máy tính và duyệt ₫ọc nội dung của thư mục bất kỳ của hệ thống file.
IV. Phân tích :
ƒ Sau khi phân tích chức năng của chương trình, ta thấy chương trình là 1 form
giao diện trực quan, nó chứa 1 Combobox giúp duyệt chọn ổ ₫ĩa muốn xem nội
dung, 1 TreeView ₫ể hiển thị cây phân cấp các thư mục trong ổ ₫ĩa ₫ược chọn, 1
DataGridView ₫ể hiển thị danh sách các file trong thư mục ₫ang chọn và các
thông tin thiết yếu của từng file.
V. Qui trình :
1. Chạy VS .Net, chọn menu File.New.Project ₫ể hiển thị cửa sổ New Project.
2. Mở rộng mục Visual C# trong TreeView "Project Types", chọn mục Window, chọn
icon "Windows Application" trong listbox "Templates" bên phải, thiết lập thư mục
chứa Project trong listbox "Location", nhập tên Project vào textbox "Name:" (thí dụ
FSViewer), click button OK ₫ể tạo Project theo các thông số ₫ã khai báo.
3. Form ₫ầu tiên của ứng dụng ₫ã hiển thị trong cửa sổ thiết kế, việc thiết kế form là
quá trình lặp 4 thao tác tạo mới/xóa/hiệu chỉnh thuộc tính/tạo hàm xử lý sự kiện cho


từng ₫ối tượng cần dùng trong form.
4. Chọn Form ₫ể hiển thị cửa sổ thuộc tính của nó, tìm mục Font của Form và thay ₫ổi
thành font cần dùng ₫ể hiển thị các nội dung văn bản trong form. Tìm mục Text và
hiệu chỉnh nội dung thành "Trình duyệt xem hệ thống file".
5. Nếu cửa sổ ToolBox chưa hiển thị chi tiết, chọn menu View.Toolbox ₫ể hiển thị nó
(Auto Hide) nằm ở góc
(thường nằm ở bên trái màn hình). Click chuột vào button
trên phải cửa sổ ToolBox ₫ể chuyển nó về chế ₫ộ hiển thị thường trực.
6. Duyệt tìm phần tử Label (trong nhóm Common Controls), chọn nó, dời chuột về góc
trên trái của form và vẽ nó với kích thước mong muốn. Xem cửa sổ thuộc tính của

SinhVienZone.com

/>

Trang 2

Label vừa vẽ (thường ở góc dưới phải màn hình), duyệt tìm và hiệu chỉnh thuộc tính
Text = "Chọn ổ ₫ĩa :".
7. Duyệt tìm phần tử ComboBox (trong nhóm Common Controls), chọn nó, dời chuột về
ngay bên phải Label vừa vẽ và vẽ nó với kích thước mong muốn. Xem cửa sổ thuộc
tính của ComboBox vừa vẽ (thường ở góc dưới phải màn hình), duyệt tìm và hiệu
chỉnh thuộc tính (Name) = cbDrives.
8. Duyệt tìm phần tử TreeView (trong nhóm Common Controls), chọn nó, dời chuột về
ngay bên dưới Label ₫ược vẽ ở bước 6 và vẽ nó với kích thước mong muốn (chiếm
khoảng 1/3 bề ngang của Form và hết phần còn lại bên dưới Form. Xem cửa sổ
thuộc tính của TreeView vừa vẽ (thường ở góc dưới phải màn hình), duyệt tìm và
hiệu chỉnh thuộc tính (Name) = tvFolders.
9. Duyệt tìm phần tử DataGridView (trong nhóm Data), chọn nó, dời chuột về ngay bên
phải TreeView vừa vẽ và vẽ nó với kích thước mong muốn (chiếm phần còn lại bên

phải và hết phần còn lại bên dưới Form. Xem cửa sổ thuộc tính của DataGridView
vừa vẽ (thường ở góc dưới phải màn hình), duyệt tìm và hiệu chỉnh thuộc tính
(Name) = dgvFiles.
Sau khi thiết kế xong, Form có dạng sau :

10. Dời chuột về ComboBox cbDrives và chọn nó, cửa sổ thuộc tính của nó sẽ hiển thị,
click icon
₫ể hiển thị danh sách các sự kiện của ComboBox, duyệt tìm sự kiện
SelectedIndexChanged, ấn kép chuột vào comboBox bên phải sự kiện
SelectedIndexChanged ₫ể máy tạo tự ₫ộng hàm xử lý cho sự kiện này. Cửa sổ mã
nguồn sẽ hiển thị khung sườn của hàm vừa ₫ược tạo với thân rỗng, viết thân cho
hàm này như sau :
private void cbDrives_SelectedIndexChanged(object sender, EventArgs e) {
//lấy chuỗi miêu tả ổ ₫ĩa ₫ược chọn
String sdrv = cbDrives.SelectedItem.ToString();
//xóa nội dung hiện hành của TreeView chứa cây thư mục
tvFolders.Nodes.Clear();

SinhVienZone.com

/>

Trang 3

//tạo ₫ối tượng TreeNode miêu tả thư mục gốc
TreeNode FdNode = new TreeNode();
FdNode.Text = sdrv; //tên thư mục gốc
//add ₫ối tượng TreeNode miêu tả thư mục gốc vào cây
tvFolders.Nodes.Add(FdNode);
//triển khai nội dung thư mục gốc ₫ể nó chứa các thư mục con hiện hành

Populate(FdNode, sdrv);
//mở rộng nội dung nút miêu tả thư mục gốc trong cây
FdNode.Expand();
//hiển thị lại cây thư mục theo nội dung vừa thiết lập
tvFolders.Refresh();
}
//hàm triển khai nội dung của nút thư mục xác ₫ịnh
private void Populate(TreeNode FdNode, String sdir) {
//lấy danh sách thư mục con của thư mục sdir
string[] sdlistw = Directory.GetDirectories(sdir);
TreeNode ChildNode;
//xóa tất cả nội dung cũ của nút thư mục sdir
FdNode.Nodes.Clear();
//duyệt và thêm từng nút thư mục con vào cho nút thư mục sdir
foreach (string subdir in sdlistw) {
string[] lstStr = subdir.Split('\\');
ChildNode = new TreeNode();
ChildNode.Text = lstStr[lstStr.Length - 1]; //nút con
ChildNode.Nodes.Add(new TreeNode());
FdNode.Nodes.Add(ChildNode);
}

10. Dời chuột về phía trên cửa sổ làm việc, chọn tag "Form1.cs [Desgin]" ₫ể hiển thị lại
cửa sổ thiết kế form, dời chuột về TreeView tvFiles và chọn nó, cửa sổ thuộc tính của
nó sẽ hiển thị, click icon
₫ể hiển thị danh sách các sự kiện của TreeView, duyệt
tìm sự kiện NodeMouseClick, ấn kép chuột vào comboBox bên phải sự kiện
NodeMouseClick ₫ể máy tạo tự ₫ộng hàm xử lý cho sự kiện này. Cửa sổ mã nguồn
sẽ hiển thị khung sườn của hàm vừa ₫ược tạo với thân rỗng, viết thân cho hàm này
như sau :

private void tvFolders_NodeMouseClick(object sender,
TreeNodeMouseClickEventArgs e) {
if (e.X >= e.Node.Bounds.Left) {
//chọn folder ==> hiển thị các file bên trong nó lên DataGridView
DisplayFiles(getDir(e.Node));
} else //mở rộng/thu gọn nội dung nút thư mục tương ứng trong cây
tvFolders_NodeMouseDoubleClick(sender, e);
}

SinhVienZone.com

/>

Trang 4

//hàm hiển thị các file bên trong thư hiện ₫ược chọn lên DataGridView
private void DisplayFiles(String sdir) {
//xóa danh sách file của DataGridView
dgvFiles.Rows.Clear();
//lấy danh sách các file trong thư mục sdir
string[] flist = Directory.GetFiles(sdir);
String[] sbuf = new String[3];
String[] buf;
//lặp lấy thông tin từng file trong thư mục và hiển thị nó lên DataGridView
foreach (string fname in flist) {
FileInfo fi = new FileInfo(fname);
sbuf[1] = fi.Length.ToString();
sbuf[2] = fi.LastWriteTime.ToString();
buf = fname.Split('\\');
sbuf[0] = buf[buf.Length - 1];

dgvFiles.Rows.Add(sbuf);
}

11. Dời chuột về phía trên cửa sổ làm việc, chọn tag "Form1.cs [Desgin]" ₫ể hiển thị lại
cửa sổ thiết kế form, dời chuột về TreeView tvFiles và chọn nó, cửa sổ thuộc tính của
nó sẽ hiển thị, click icon
₫ể hiển thị danh sách các sự kiện của TreeView, duyệt
tìm sự kiện NodeMouseDoubleClick, ấn kép chuột vào comboBox bên phải sự kiện
NodeMouseDoubleClick ₫ể máy tạo tự ₫ộng hàm xử lý cho sự kiện này. Cửa sổ mã
nguồn sẽ hiển thị khung sườn của hàm vừa ₫ược tạo với thân rỗng, viết thân cho
hàm này như sau :
private void tvFolders_NodeMouseDoubleClick(object sender,
TreeNodeMouseClickEventArgs e) {
TreeNode node = e.Node;
//chuyển trạng thái mở rộng/thu gọn của nút hiện hành
if (node.NextNode !=null && node.IsExpanded==false) node.Collapse();
else {
String sdir = getDir(node);
Populate(node, sdir);
}
}
//hàm tạo chuỗi miêu tả ₫ường dẫn tuyệt ₫ối của thư mục tương ứng với nút node
private String getDir(TreeNode node) {
String kq = node.Text;
while (node.Parent != null) {//nút này có cha
node = node.Parent;
if (node.Parent != null) //nút này có cha
kq = node.Text + "\\" + kq;
else kq = node.Text + kq;
}


SinhVienZone.com

/>

Trang 5

return kq;

 

12. Dời chuột về phía trên cửa sổ làm việc, chọn tag "Form1.cs [Desgin]" ₫ể hiển thị lại
cửa sổ thiết kế form, chọn Form ₫ể hiển thị cửa sổ thuộc tính của nó, click icon
₫ể hiển thị danh sách các sự kiện của Form, duyệt tìm sự kiện SizeChanged, ấn kép
chuột vào comboBox bên phải sự kiện SizeChanged ₫ể máy tạo tự ₫ộng hàm xử lý
cho sự kiện này. Cửa sổ mã nguồn sẽ hiển thị khung sườn của hàm vừa ₫ược tạo với
thân rỗng, viết thân cho hàm này như sau :
//hàm thay ₫ổi kích thước các phần tử giao diện trong Form theo kích thước mới
private void Form1_SizeChanged(object sender, EventArgs e) {
int cx = ClientSize.Width;
int cy = ClientSize.Height;
int top = tvFolders.Top;
int left = tvFolders.Left;
tvFolders.Size = new Size(cx/3-left, cy-8-top); //TreeView chiếm 1/3 chiều ngang
dgvFiles.Location = new Point(cx/3,top);
dgvFiles.Size = new Size(2*cx/3-8, cy-8-top); //DataGridView chiếm 2/3 còn lại
}
13. Dời cursor về ₫ầu file mã nguồn, thêm các lệnh using sau ₫ể dùng các namespace
tương ứng :
using System.IO;

14. Tìm hàm khởi tạo form rồi hiệu chỉnh nội dung của nó như sau ₫ể thiết lập các thông
tin ban ₫ầu của chương trình :
public Form1()
{
InitializeComponent();
//thiết lập listbox ₫ể chứa tên các ổ ₫ĩa
DriveInfo[] allDrives = DriveInfo.GetDrives();
cbDrives.Items.Clear();
foreach (DriveInfo d in allDrives)
{
cbDrives.Items.Add(d.Name);
}
//chọn mặc ₫ịnh ổ ₫ầu tiên
cbDrives.SelectedIndex = 0;
//thiết lập DataGridView có 3 cột : tên file, kích thước, ngày giờ cập nhật lần cuối
dgvFiles.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.None;
dgvFiles.CellBorderStyle = DataGridViewCellBorderStyle.None;
dgvFiles.GridColor = Color.Black;
dgvFiles.ColumnCount = 3;
dgvFiles.Columns[0].Name = "Tên file";
dgvFiles.Columns[1].Name = "Kích thước";

SinhVienZone.com

/>

Trang 6

dgvFiles.Columns[2].Name = "Cập nhật lần cuối lúc";
dgvFiles.Font = new Font("Tahoma", 10f);

dgvFiles.Name = "dgvFiles";
dgvFiles.AutoResizeColumns();
dgvFiles.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dgvFiles.MultiSelect = true;
dgvFiles.AllowUserToResizeColumns = true;
}
15. Chọn menu Debug.Start Debugging ₫ể dịch và chạy thử ứng dụng. Khi Form chương
trình hiển thị, hãy click chuột vào button phóng to/thu nhỏ, form sẽ ₫ược phóng to ₫ể
chiếm hết màn hình và TreeView+DataGridView bên trong nó cũng ₫ược phóng to
theo, lúc này sẽ thấy nội dung cây phân cấp và danh sách các file dễ dàng hơn.
16. Hãy thao tác duyệt chọn và xem nội dung 1 số thư mục theo yêu cầu ₫ể xem chương
trinh hoạt ₫ộng tốt không.

SinhVienZone.com

/>


×