Thứ bảy, ngày 3 tháng 12 năm 2016

Sử dụng control TreeView trong C# – Using TreeView control in C#

Ngày đăng: 18/12/2011, 12:19:37AM | Lượt xem: 22,130
Hot!

TreeView là một control trong Windows Form dùng để hiển thị hệ thông phân cấp của các node. Giống như các file và folder được hiển thị trong cửa sổ phía bên phải của Windows Explorer

TreeView control hữu ích trong rất nhiều trường hợp, nó giúp việc hiển thị các dữ liệu một cách có hệ thống hơn, rõ ràng hơn. Bài viết này sẽ trình bày cách sử dụng những tính năng cơ bản của control TreeView này.

 

1. Giới thiệuimage

Với  control TreeView trong Windows Form, chúng ta có thể hiển thị một hệ thống phân cấp các node cho những người dùng. Giống như cửa sổ phía bên trái trong Windows Explorer  trong hệ điều hành Windows. Mỗi một node trong TreeView có thể chứa những node khác – được gọi là những node con (child nodes). Bạn có thể hiển thị các node cha hay các node con giống như expanded hay collapsed. Bạn cũng có thể hiển thị TreeView với các checkbox bằng cách thiết lập thuộc tính cho Checkboxs cho node = true. Bạn cũng thể thực hiện việc lựa chọn hay xóa các node bằng cách thiết lập thuộc tính Checked của node là true hay false.

2. Thêm và xóa các node với TreeView.image

    TreeView control chứa các node ở cấp cao nhất trong Nodes Collection. Mỗi TreeNode đề có nodes collection của mình để chứa các node con. Cả 2 thuôc tính collection là của kiểu TreeNodeCollection với các hàm thành viên cho phép bạn thêm (add)  hoặc xóa (remove) và sắp xếp các node ở một cấp đơn trong hệ thống phân cấp các node.

-  Sử dụng phương thức Add bằng thuộc tính Nodes của TreeView

// Adds new node as a child node of the currently selected node. TreeNode newNode = new TreeNode("Text for new node");
treeView1.Nodes.Add(newNode);
TreeNode newNode1 = new TreeNode("Text for new node 1");
treeView1.Nodes.Add(newNode1);
TreeNode newNode2 = new TreeNode("Welcome to TreeView Control Tutorial");
treeView1.Nodes.Add(newNode2);

TreeNode node1 = new TreeNode("C#");
TreeNode node2 = new TreeNode("VB.NET");
TreeNode node3 = new TreeNode("C++");
TreeNode[] array = new TreeNode[] { node1, node2, node3 };
TreeNode programmingLanguage = new TreeNode("Programming Language", array);
treeView1.Nodes.Add(programmingLanguage);

Kết quả của ví dụ trên:

image

-  Sử dụng phương thức Remove để xóa một node đơn, Clear để xóa tất cả các node.

// Removes currently selected node, or root if nothing // is selected. treeView1.Nodes.Remove(newNode1);
// Clears all nodes. treeView1.Nodes.Clear();

3. Add thông tin tùy chỉnh vào TreeView

Tạo một lớp node mới dẫn xuất từ lớp TreeNode, trong đó có một trường tùy biến để ghi lại một đường dẫn tập tin.

class myTreeNode : TreeNode {
    public string FilePath;

    public myTreeNode(string fp)
    {
        FilePath = fp;
        this.Text = fp.Substring(fp.LastIndexOf("\\"));
    }
}

- Bạn có thể sử dụng node mới được dẫn xuất như một tham số trong các lời gọi hàm.

Trong ví dụ dưới đây, đường dẫn đặt ra cho các vị trí của trường Text là thư mục My Document. Điều này có thể được thực hiện bởi ta có thể giả định rằng hầu hết các máy chạy hệ điều hành windows sẽ có thư mục này. Điều này cũng cho phép người dùng với các mức độ truy cập hệ thống tối thiểu một cách an toàn khi chạy ứng dụng.

// Lưu ý: sử dụng ký tự @ khi sử dụng đường dẫn xác định. treeView1.Nodes.Add(new myTreeNode (System.Environment.GetFolderPath
    (System.Environment.SpecialFolder.Personal)+ @"\TextFile.txt") );

-  Sử dụng Casting để chuyển đổi kiểu của các đối tượng.

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    myTreeNode myNode = (myTreeNode)e.Node;
    MessageBox.Show("Node selected is " + myNode.FilePath);
}

4. Xác định node nào trong TreeView đã được click

-  Sử dụng EventArgs object để trả về một tham chiếu đến đối tượng node được click.

-  Xác định được node được click bằng cách kiểm tra lớp TreeViewEventArgs có chứa dữ liệu liên quan đến sự kiện này.

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
    // Determine by checking the Text property. MessageBox.Show(e.Node.Text);
}

5. Duyệt qua tất cả các node của TreeView

-  Tạo một thủ tục đệ quy (recursive) để kiểm tra mỗi node.

-  Gọi thủ tục.

Ví dụ dưới đây minh họa việc làm thế nào để in các thuộc tính Text của các đối tượng TreeNode.

private void PrintRecursive(TreeNode treeNode)
{
    // in ra các node. listBox1.Items.Add(treeNode.Text);
    MessageBox.Show(treeNode.Text);
    // Sử dụng đệ quy để in ra từng node. foreach (TreeNode tn in treeNode.Nodes)
    {
        PrintRecursive(tn);
    }
}

// Gọi thủ tục sử dụng TreeView private void CallRecursive(TreeView treeView)
{
    // IN ra từng node sử dụng đệ quy. TreeNodeCollection nodes = treeView.Nodes;
    foreach (TreeNode n in nodes)
    {
        PrintRecursive(n);
    }
}

Gọi lại phương thức trên trong sự kiện button click.

private void btnPrintNode_Click(object sender, EventArgs e)
{
    PrintRecursive(treeView1.SelectedNode);
}

Kết quả của ví dụ:

image

6. Thiết lập icon cho các node trong TreeView

-  Để tạo icon cho mỗi node của TreeView ta phải có một imageList chứa các hình cần sử dụng.

1. Thiết lập thuộc tính imageList của TreeView = imageList mà ta muốn sử dụng

treeView1.ImageList = imageList1;

Việc này hoàn toàn có thể được thực hiện bằng cách tùy chỉnh thuộc tính Image List của TreeView trong giao diện thiết kế.

2. Thiết lập thuộc tính ImageIndex và SelectedImageIndex của node.

Việc thiết lập này có thể thực hiện theo 2 cách:

-  Click vào button  VisualStudioEllipsesButton screenshot  của mục ImageIndex trong thanh properties từ giao diện thiết kế của TreeView trên Form.

-  Sử dụng code:

TreeNode newNode = new TreeNode("Text for new node");
newNode.ImageIndex = 0;
treeView1.Nodes.Add(newNode);

TreeNode newNode1 = new TreeNode("Text for new node 1");
newNode1.ImageIndex = 1;
treeView1.Nodes.Add(newNode1);

TreeNode newNode2 = new TreeNode("Welcome to TreeView Control Tutorial");
newNode2.ImageIndex = 2;
treeView1.Nodes.Add(newNode2);

TreeNode node1 = new TreeNode("C#");
TreeNode node2 = new TreeNode("VB.NET");
TreeNode node3 = new TreeNode("C++");
TreeNode[] array = new TreeNode[] { node1, node2, node3 };
TreeNode programmingLanguage = new TreeNode("Programming Language", array);
programmingLanguage.ImageIndex = 6;
treeView1.Nodes.Add(programmingLanguage);

-  Kết quả sẽ là:

image

7. Đính kèm một ShortCut Menu  cho một TreeView Node

-  Khởi tạo một TreeView control với các thiết lập thuộc tính thích hợp, tạo ra một node gốc, và sau đó thêm các node con.

-  Tạo một ContexMenuStrip và sau đó thêm một ToolScriptMenuItem cho mỗi thao tác mà bạn muốn thực hiện trong thời gian chương trình thực thi.

-  Thiết lập thuộc tính ContextMenuStrip của Tree Node thích hợp vào menu shortcut bạn tạo ra.

-  Khi thuộc tính này được thiết lập, menu chuột phải sẽ tự hiển thị khi bạn bấm chuột phải vào node.

Ví dụ:

// Declare the TreeView and ContextMenuStrip private TreeView menuTreeView;
private ContextMenuStrip docMenu;

public void InitializeMenuTreeView()
{
    // Create the TreeView. menuTreeView = new TreeView();
    menuTreeView.Size = new Size(200, 200);

    // Create the root node. TreeNode docNode = new TreeNode("Documents");

    // Add some additional nodes. docNode.Nodes.Add("phoneList.doc");
    docNode.Nodes.Add("resume.doc");

    // Add the root nodes to the TreeView. menuTreeView.Nodes.Add(docNode);

    // Create the ContextMenuStrip. docMenu = new ContextMenuStrip();

    //Create some menu items. ToolStripMenuItem openLabel = new ToolStripMenuItem();
    openLabel.Text = "Open";
    ToolStripMenuItem deleteLabel = new ToolStripMenuItem();
    deleteLabel.Text = "Delete";
    ToolStripMenuItem renameLabel = new ToolStripMenuItem();
    renameLabel.Text = "Rename";

    //Add the menu items to the menu. docMenu.Items.AddRange(new ToolStripMenuItem[]{openLabel,
    deleteLabel, renameLabel});

    // Set the ContextMenuStrip property to the ContextMenuStrip. docNode.ContextMenuStrip = docMenu;

    // Add the TreeView to the form. this.Controls.Add(menuTreeView);
}

8. Source code demo và tài liệu tham khảo thêm

-  Click vào đây để download source code demo các ví dụ trên – được viết trên Visual studio 2010 (C#).

-  Source code chương trình Explorer với những tính năng cơ bản viết bằng C#.

-  Tham khảo các viết một ứng dụng giống TreeView được sử dụng trong Windows Explorer từ CodeProject.com.

-  Tham khảo thêm về TreeView tại MSDN

 Chia sẻ qua: 
Hot!
Ý kiến bạn đọc

These items will be permanently deleted and cannot be recovered. Are you sure?

Gallery

image

Maecenas viverra rutrum pulvinar

Maecenas viverra rutrum pulvinar! Aenean vehicula nulla sit amet metus aliquam et malesuada risus aliquet. Vestibulum rhoncus, dolor sit amet venenatis porta, metus purus sagittis nisl, sodales volutpat elit lorem…

Read more

Text Links

Thiết kế logo chuyên nghiệp Insky
DAFABET
W88 w88b.com/dang-ky-tai-khoan-w88
W88
Copyright © 2011 - 2012 vietshare.vn by phamkhuong102@gmail.com doanhkisi2315@gmail.com. All rights reserved.