1. Trang chủ
  2. » Giáo án - Bài giảng

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

6 69 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 124,3 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 ₫ể

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ó (thường nằm ở bên trái màn hình) Click chuột vào button (Auto Hide) nằm ở góc 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

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 :

privatevoid 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();

Trang 3

//tạo ₫ối tượng TreeNode miêu tả thư mục gốc

TreeNode FdNode = newTreeNode();

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

privatevoid 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 = newTreeNode();

ChildNode.Text = lstStr[lstStr.Length - 1]; //nút con

ChildNode.Nodes.Add(newTreeNode());

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 :

privatevoid 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);

}

Trang 4

//hàm hiển thị các file bên trong thư hiện ₫ược chọn lên DataGridView

privatevoid 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 = newString[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 = newFileInfo(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 :

privatevoid 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 privateString 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;

}

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 privatevoid Form1_SizeChanged(object sender, EventArgs e) {

int cx = ClientSize.Width;

int cy = ClientSize.Height;

int top = tvFolders.Top;

int left = tvFolders.Left;

tvFolders.Size = newSize(cx/3-left, cy-8-top); //TreeView chiếm 1/3 chiều ngang dgvFiles.Location = newPoint(cx/3,top);

dgvFiles.Size = newSize(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";

Trang 6

dgvFiles.Columns[2].Name = "Cập nhật lần cuối lúc";

dgvFiles.Font = newFont("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

Ngày đăng: 28/01/2020, 22:29

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm