Lập trình UD Desktop_06_ListView (tt) TreeView

Bài trước: Lập trình UD Desktop_05_PictureBox ListView
-----
Lập trình với ListView

Viết hàm LoadListView để khởi tạo một ListView,

        public Form1()
        {
            InitializeComponent();
            LoadListView();
        }

Trong hàm LoadListView sẽ thực hiện các khởi tạo.

Ví dụ,

– Để thêm cột cho ListView dùng hàm sau,

lvQuocGia.Columns.Add("Tên nước");

– Để thiết lập màu nền cho ListView, dùng hàm sau,

Color temp = Color.FromArgb(0x5E9EA0);
lvQuocGia.BackColor = Color.FromArgb(temp.R, temp.G, temp.B);

– Để tạo lưới cho ListView, dùng hàm sau,

lvQuocGia.GridLines = true;

– Để thiết lập độ rộng của một cột, dùng hàm sau,

lvQuocGia.Columns[0].Width = 130;

– Để thiết lập font-size cho ListView, dùng hàm sau,

lvQuocGia.Font = new Font("Times New Roman", 13);

– Để thêm một item cho ListView, cách làm như sau,

   ListViewItem item1 = new ListViewItem();
            item1.Text = "US";
            lvQuocGia.Items.Add(item1);

– Để thêm một subitem cho một item, sử dụng hàm sau,

item1.SubItems.Add(new ListViewItem.ListViewSubItem() { Text = "Châu Mỹ" });

– Để thêm checkbox cho các item, sử dụng hàm sau,

lvQuocGia.CheckBoxes = true;

– Để thêm ảnh cho mỗi item, làm các bước sau,

// khai báo danh sách chứa ảnh
ImageList smallImageList;
ImageList largeImageList;
// đưa ảnh vào danh sách
            largeImageList = new ImageList() { ImageSize = new Size(70,70) };
            largeImageList.Images.Add(new Bitmap(Application.StartupPath + "\\Resources\\us.jpg"));

smallImageList = new ImageList() { ImageSize = new Size(20, 20) };
            smallImageList.Images.Add(new Bitmap(Application.StartupPath + "\\Resources\\us.jpg"));
// đưa danh sách ảnh vào ListView
            LoadImageList();
            lvQuocGia.SmallImageList = smallImageList;
            lvQuocGia.LargeImageList = largeImageList;
// lấy từng ảnh cho từng item
item1.ImageIndex = 0;

– Lấy thông tin khi người dùng chọn mỗi item, làm như sau,

private void lvQuocGia_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListView lv = sender as ListView;
            if (lv.SelectedItems.Count > 0)
            {
                foreach (ListViewItem item in lv.SelectedItems)
                {
                    MessageBox.Show(item.SubItems[0].Text + " - " + item.SubItems[1].Text + " - " + item.SubItems[2].Text);
                }
            }
        }

Lab 11. Sử dụng ListView để hiển thị các quốc gia

[Giao diện chương trình – giống Lab10]

[Yêu cầu chức năng]

– Chỉ bằng cách viết mã (code) cho ListView, tạo ra các giao diện cho các chế độ xem (View) là: LargeIcon, SmallIcon, Details, Tile, List

– Khi người dùng bấm vào các nút phía trên, ListView sẽ hiển thị ở chế độ tương ứng

­– Khi hiển thị ở chế độ Details thì có nút checkbox để người dùng có thể chọn từng quốc gia

– Khi người dùng chọn một hoặc nhiều item thì hiển thị Tên nước + Châu lục + Thủ đô

2.15       TreeView




Lab 12. Giả lập chương trình File Explorer (Windows Explorer). Gốc sẽ là ổ đĩa bất kỳ (Ví dụ: D:\).

[Gợi ý cách làm]

– Sử dụng SplitContainer để chứa TreeView và ListView, nên thiết lập thuộc tính Dock là Fill để TreeView và ListView chiếm hết không gian của Form.

– Thêm ImageList cho Form, đặt tên là imageListIcon, gồm hai ảnh, một ảnh là biểu tượng của thư mục, ảnh còn lại là biểu tượng của tập tin. Dùng thuộc tính Images để thêm hai ảnh vào cho imageListIcon.

– Thêm TreeView vào khung bên trái của SplitContainer, đặt tên là tvExplorer. Trong cửa sổ Properties của tvExplorer, thiết lập thuộc tính Dock là Fill, và ImageList trỏ tới imageListIcon.

– Thêm ListView vào khung bên phải của SplitContainer, đặt tên là lvExplorer. Trong cửa sổ Properties của lvExplorer thực hiện các thiết lập sau:  

  + Thiết lập Dock là Fill

  + Thiết lập View là Details

  + Thêm ba cột cho lvExplorer, với tiêu đề các cột là: Name, Type, Last Modified

  + Trỏ thuộc tính SmallImageList tới imageListIcon

– Viết hàm để xuất thông tin lên tvExplorer (cửa sổ bên trái):

Vì đoạn mã có sử dụng tới lớp DirectoryInfo, lớp này nằm trong namespace System.IO nên cần thêm đoạn mã này vào mã nguồn:

using System.IO;

Tham khảo hàm để xuất các thư mục của ổ đĩa D:\ lên TreeView,

void XuatTreeView()
        {
            // Khai báo nút gốc - rootNode
            TreeNode rootNode;
            DirectoryInfo info = new DirectoryInfo(@"D:\");
            MessageBox.Show(info.Name);
            // nếu ổ đĩa có tồn tại
            if (info.Exists)
            {
                // tạo nút gốc
                rootNode = new TreeNode(info.Name);
                // gắn thông tin liên quan vào nút tương ứng
                rootNode.Tag = info;
                // gọi hàm lấy các thư mục con ở đây

                // gắn nút gốc lên tvExplorer
                tvExplorer.Nodes.Add(rootNode);
            }
            // dòng này vô nghĩa, nếu có đọc để hiểu mã nguồn thì nhớ xóa đi
            //MessageBox.Show(info.ToString());
        }


void LayCacThuMucCon(DirectoryInfo[] subDirs, TreeNode nodeToAddTo)
        {
            // khai báo một nút
            TreeNode aNode;
            // khai báo danh sách để chứa các thư mục con tìm được
            DirectoryInfo[] subSubDirs;
            // duyệt danh sách các thư mục con truyền vào
            try
            {
                foreach (DirectoryInfo subDir in subDirs)
                {
                    // tạo một nút với tên và chỉ mục của ảnh khi được chọn và không được chọn [0,0]
                    aNode = new TreeNode(subDir.Name, 0, 0);
                    // gắn thông tin liên quan vào nút
                    aNode.Tag = subDir;
                    // thiết lập từ khóa cho ảnh khi ở chế độ không được chọn
                    aNode.ImageKey = "folder";
                    // tìm các thư mục con mức kế tiếp
                    subSubDirs = subDir.GetDirectories();
                    // nếu còn thư mục con
                    if (subSubDirs.Length != 0)
                    {
                        // gọi đệ quy hàm LayCacThuMucCon()
                        LayCacThuMucCon(subSubDirs, aNode);
                    }
                    // gắn nút vào nút cha
                    nodeToAddTo.Nodes.Add(aNode);
                }
            }catch { // bác sĩ nói: nhớ vận động nhiều, uống đủ nước, nếu đã 22h:00 thì đi ngủ, mai làm tiếp
                return;
            }
        }

Gọi hàm XuatTreeView(),

public Form1()
        {
            InitializeComponent();
            XuatTreeView();
        }


[Giao diện kết quả]


<///// hết buổi 8
-----
Tiếp theo: Lập trình UD Desktop_07_ListView (tt) TreeView (tt) Menu
Xem thêm: Danh sách các bài học