Chèn ảnh vào một SubItem bất kỳ trong ListView

Chèn ảnh vào một SubItem bất kỳ trong ListView

Bạn đã từng sử dụng ListView để hiển thị danh sách bản ghi. Trong ListView, mặc định chỉ cho bạn hiển thị ảnh ở Cột đầu tiên. Vậy làm thếnào để có thể hiển thị ảnh ở 1 SubItem thuộc cột bất kỳ trong ListView? Bài viết này sẽ hướng dẫn bạn làm được điều đó!

Trong ví dụ này, tôi sẽ thay chữ giới tính Nam, Nữ trong danh sách = 2 hình ảnh đại diện tương ứng tại cột giới tính.

Để bắt đầu với bài này, bạn hãy thiết kế 1 Form đơn giản như sau:

Tiếp theo, bạn chuẩn bị 2 cái ảnh thể hiện giới tính Nam là "male.png" và nữ là "female.png" và đặt chúng vào Thư mục "Bin/Debug" của ứng dụng cho dễ lấy đường dẫn (Bạn có thể đặt vị trí khác nếu muốn). Ảnh bạn có thể Search trên http://iconfinder.com sẽ có luôn!!

Bây giờ bạn hãy lập trình để thêm 1 Item vào ListView:

private void btnAdd_Click(object sender, EventArgs e)

        {

            ListViewItem item = new ListViewItem((listView1.Items.Count+1).ToString());

            item.SubItems.Add(txtFullName.Text);

            string gender = "Nam";

            if (rdoFemale.Checked)

                gender = "Nữ";           

            item.SubItems.Add(gender);


            // Dùng thuộc tính Tag để lưu vết giới tính của 1 Item

            item.Tag = gender;

            listView1.Items.Add(item);

        }

Với đoạn code trên bạn đã có thể thêm các Item như thông thường.

Và để có thể vẽ ảnh vào 1 SubItem bạn hãy thiết lập thuộc tính OwnerDraw của ListView = True

Sau đó lập trình sử lý với 2 sự kiện: DrawSubItem DrawColumnHeader như sau:

private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
        {

            // Xác định điều kiện cột cần vẽ

            if (e.Header == this.clGender)

            {         

                // Tạo ảnh Icon tùy theo giới tính

                Image icon = Image.FromFile("male.png");             

                if(e.Item.Tag.ToString()=="Nữ")

                    icon = Image.FromFile("female.png"); 


                // Tạo kích thước vẽ ảnh, cách viền 10px

                var imageRect = new Rectangle(e.Bounds.X + 10, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height);

                // Vẽ ảnh

                e.Graphics.DrawImage(icon, imageRect);              

            }
            else
            {

                // Mặc định là vẽ Subitem này như thông thường

                e.DrawDefault = true;                

            }           

        }     

        private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
        {

            // Mặc định là vẽ cột tiêu đề

            e.DrawDefault = true;

        }

Đến đây bạn có thể chạy thử nghiệm chương trình, hãy thêm các Item với các giới tính khác nhau, bạn sẽ được một kết quả như mong muốn:

Chèn ảnh vào một SubItem bất kỳ trong ListView

Chúc bạn thành công!

Bạn thấy bài viết này như thế nào?: 
Average: 10 (1 vote)
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
10 lý do iPhone 4S là smartphone tốt nhất của năm 2011

10 lý do iPhone 4S là smartphone tốt nhất của năm 2011

Dù mới xuất hiện, nhưng iPhone 4S đã là sự lựa chọn hàng đầu của rất nhiều người sử dụng.

Yahoo Search

Công cụ tìm kiếm Yahoo Search được đặt tên mới là YQ

Yahoo tạo ra công nghệ mới này với mục đích tạo điều kiện cho người dùng có khả năng truy tìm thông tin dễ hơn và nhanh hơn thông qua các từ khóa. Công cụ tìm kiếm Yahoo Search được đặt tên mới là YQ.

New iPad lại trục trặc với kết nối Wi-Fi

New iPad lại trục trặc với kết nối Wi-Fi

Một số khách hàng đã phàn nàn rằng iPad mới kết nối Wi-Fi kém hơn nhiều so với những mẫu iPad trước đây của Apple.

Công ty diệt chuột T&C

 

Diet con trung