-----
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
Tham khảo Clip: https://www.youtube.com/watch?v=3OEBp3tTt9E&t=370s
Đọc thêm tại đây: https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/creating-an-explorer-style-interface-with-the-listview-and-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());
}
Đọc thêm về TreeNode.ImageKey tại đây: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.treenode.imagekey?redirectedfrom=MSDN&view=netframework-4.7.2#System_Windows_Forms_TreeNode_ImageKey
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