如何按名称而不是位置索引图像列表?
How to index image list by name instead of position?
我是 C# 的新手,正在 Windows 7 上开发 Visual Studios Express 2012。
我有一个名称为 "a"
、"b"
、"c"
的图像列表,我有一个包含选项 "a"
、[=7] 的组合框=], 和 "c"
.
我正在尝试将与组合框选择相对应的图像添加到图片框。
最初我使用的是位置而不是名称,如下所示:
int i = comboBox1.SelectedIndex;
pictureBox1.Image = imageList1.Images[i];
但是,我认为组合框选项稍后可能会发生变化,它们可能不再按相同的顺序排列,所以我想按名称而不是位置来进行。
我试过这个:
string name = comboBox1.SelectedText;
int i = imageList1.Images.IndexOfKey(name);
pictureBox1.Image = imageList1.Images[i];
但这会导致运行时错误 System.ArgumentOutOfRangeException ... InvalidArgument=Value of '-1' is not valid for 'index'
。
我也在想这样的事情可能会奏效:
string grade = comboBox1.SelectedText;
pictureBox1.Image = imageList1.ImageCollection.IndexOfKey(grade);
或
pictureBox1.Image = ImageList.ImageCollection.IndexOfKey(grade);
但是这些给我编译器错误
'ImageCollection': cannot reference a type through an expression;
try 'System.Windows.Forms.ImageList.ImageCollection'
和
An object reference is required for the non-static field, method, or property
'System.Windows.Forms.ImageList.ImageCollection.IndexOfKey(string)'
我应该怎么做?对替代方法的建议?
提前致谢。
只需使用
imageList1.Images[comboBox1.SelectedItem.ToString()];
删除任何断点或消息框
我试过Tuco的解决方案,结果还是一样的错误。
通过尝试,我找到了我的解决方案...所以我将此提供给所有未使用给定解决方案解决问题的人。
在我的例子中,它是一个名为 tvFiles
的 Treeview
/* Fill/Define the TreeViews ImageList */
tvFiles.ImageList = imageList1;
/* Set the Index by Imagename */
tvFiles.ImageIndex = imageList1.Images.IndexOfKey(imgName);
我是 C# 的新手,正在 Windows 7 上开发 Visual Studios Express 2012。
我有一个名称为 "a"
、"b"
、"c"
的图像列表,我有一个包含选项 "a"
、[=7] 的组合框=], 和 "c"
.
我正在尝试将与组合框选择相对应的图像添加到图片框。
最初我使用的是位置而不是名称,如下所示:
int i = comboBox1.SelectedIndex;
pictureBox1.Image = imageList1.Images[i];
但是,我认为组合框选项稍后可能会发生变化,它们可能不再按相同的顺序排列,所以我想按名称而不是位置来进行。
我试过这个:
string name = comboBox1.SelectedText;
int i = imageList1.Images.IndexOfKey(name);
pictureBox1.Image = imageList1.Images[i];
但这会导致运行时错误 System.ArgumentOutOfRangeException ... InvalidArgument=Value of '-1' is not valid for 'index'
。
我也在想这样的事情可能会奏效:
string grade = comboBox1.SelectedText;
pictureBox1.Image = imageList1.ImageCollection.IndexOfKey(grade);
或
pictureBox1.Image = ImageList.ImageCollection.IndexOfKey(grade);
但是这些给我编译器错误
'ImageCollection': cannot reference a type through an expression;
try 'System.Windows.Forms.ImageList.ImageCollection'
和
An object reference is required for the non-static field, method, or property
'System.Windows.Forms.ImageList.ImageCollection.IndexOfKey(string)'
我应该怎么做?对替代方法的建议?
提前致谢。
只需使用
imageList1.Images[comboBox1.SelectedItem.ToString()];
删除任何断点或消息框
我试过Tuco的解决方案,结果还是一样的错误。
通过尝试,我找到了我的解决方案...所以我将此提供给所有未使用给定解决方案解决问题的人。
在我的例子中,它是一个名为 tvFiles
/* Fill/Define the TreeViews ImageList */
tvFiles.ImageList = imageList1;
/* Set the Index by Imagename */
tvFiles.ImageIndex = imageList1.Images.IndexOfKey(imgName);