• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Không lưu vào ImageList.Images[i].Tag được ?

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Điều hành viên: tungblt, vuathongtin

dong
Thành viên ưu tú
Thành viên ưu tú
Bài viết: 661
Ngày tham gia: T.Năm 03/04/2008 7:46 am
Has thanked: 13 time
Been thanked: 2 time

Không lưu vào ImageList.Images[i].Tag được ?

Gửi bàigửi bởi dong » CN 31/12/2017 5:17 pm

Trong ImageList1 = new ImageList();
// báo lỗi khi chạy: InvalidArgument=Value of '0' is not valid for 'index'. Parameter name: index
ImageList1.Images[i].Tag = "10"; //báo lỗi khi chạy dòng này.
ImageList1.Images.Add(key, Image);

Tại sao không lưu và tag được ?



FlyingFox
Guru
Guru
Bài viết: 810
Ngày tham gia: T.Tư 20/04/2011 9:56 am
Been thanked: 321 time

Re: Không lưu vào ImageList.Images[i].Tag được ?

Gửi bàigửi bởi FlyingFox » T.Tư 03/01/2018 6:07 am

Lổi là imagelist array trước khi add image vào imagelist.
  1. ImageList imageList = new ImageList();
  2. string[] files = { "image10.png", "image11.jpg" };
  3. foreach (string file in files)
  4. {
  5.     Image img = Image.FromFile(file);
  6.     img.Tag = file.Substring(5, 2);
  7.     imageList.Images.Add(img.Tag.ToString(), img);
  8. }
  9.  
  10. //string imgTag = imageList.Images[0].Tag.ToString();
  11. string imgTag = imageList.Images["10"].Tag.ToString();

dong
Thành viên ưu tú
Thành viên ưu tú
Bài viết: 661
Ngày tham gia: T.Năm 03/04/2008 7:46 am
Has thanked: 13 time
Been thanked: 2 time

Re: Không lưu vào ImageList.Images[i].Tag được ?

Gửi bàigửi bởi dong » T.Tư 03/01/2018 1:40 pm

Cách bạn hướng dẫn ở trên không bị báo lỗi lưu và Tag nhưng xuất thông tin từ Tag đã lưu trước đó ra lại không có gì cả.

FlyingFox
Guru
Guru
Bài viết: 810
Ngày tham gia: T.Tư 20/04/2011 9:56 am
Been thanked: 321 time

Re: Không lưu vào ImageList.Images[i].Tag được ?

Gửi bàigửi bởi FlyingFox » T.Tư 03/01/2018 6:37 pm

Có thể dùng Key thay thế Tag bằng cách viết như thế này cũng được
  1. string imgTag = imageList.Images.Keys[0].ToString();

dong
Thành viên ưu tú
Thành viên ưu tú
Bài viết: 661
Ngày tham gia: T.Năm 03/04/2008 7:46 am
Has thanked: 13 time
Been thanked: 2 time

Re: Không lưu vào ImageList.Images[i].Tag được ?

Gửi bàigửi bởi dong » T.Năm 04/01/2018 10:29 am

Hình như bạn hiểu nhầm chổ này, mình muốn truy xuất vào Tag không truy xuất vào key, bạn xem cú pháp chèn Icon vào ImageList1
ImageList1.Images.Add(key, Image);
ImageList1.Images[i].Tag = "10"; //Mình muốn truy xuất vào Tag
string key = imageList.Images.Keys[i].ToString();

FlyingFox
Guru
Guru
Bài viết: 810
Ngày tham gia: T.Tư 20/04/2011 9:56 am
Been thanked: 321 time

Re: Không lưu vào ImageList.Images[i].Tag được ?

Gửi bàigửi bởi FlyingFox » T.Năm 04/01/2018 11:47 am

Bởi vì mổi lần lấy image từ ImageList thì nó xuất ra bản copy nên Tag biến mất đi. Do đó bạn nên dùng Dictionary<string, Image> thay thế ImageList
  1. Dictionary<string, Image> dictionary = new Dictionary<string, Image>();
  2. Image img = Image.FromFile("hinh.jpg");
  3. img.Tag = "10";
  4. dictionary.Add(key, img);

Còn nếu dùng ImageList thì thêm vào Dictionary<string, string> để store tag.
  1. Dictionary<string, string> dictionary = new Dictionary<string, string>();
  2. Image img = Image.FromFile("hinh.jpg");
  3. img.Tag = "10";
  4. ImageList1.Images.Add(key, img);
  5. dictionary.Add(key, img.Tag);


Quay về “Visual Basic .NET và C# (VB.NET & C#)”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.6 khách