Trang 1 trên 1

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

Đã gửi: CN 31/12/2017 5:17 pm
gửi bởi dong
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 ?

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

Đã gửi: T.Tư 03/01/2018 6:07 am
gửi bởi FlyingFox
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();

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

Đã gửi: T.Tư 03/01/2018 1:40 pm
gửi bởi dong
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ả.

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

Đã gửi: T.Tư 03/01/2018 6:37 pm
gửi bởi FlyingFox
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();

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

Đã gửi: T.Năm 04/01/2018 10:29 am
gửi bởi dong
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();

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

Đã gửi: T.Năm 04/01/2018 11:47 am
gửi bởi FlyingFox
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);