Я новичок в C# и я работаю над визуальной студии экспресс 2012 на Windows 7.Как индексировать список изображений по имени вместо позиции?
У меня есть ImageList изображений с именами "a"
, "b"
, "c"
, и у меня есть поле со списком с параметрами "a"
, "b"
, и "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)'
Как мне это сделать? Предложения по альтернативным методам?
Заранее спасибо.
pictureBox1.Image = imageList1.Images [comboBox1.SelectedText]; – Tuco
@ 216, это не дает мне никаких ошибок, но никаких изображений не появляется в pictureBox1. Теперь, когда вы указали на это, я вижу, что визуальные студии дают второе определение для этого и позволяют использовать ключи, а не просто детексы. Поэтому вы правы, что должны работать. –
Как вы заполняете imageList? – Tuco