Позволяет сделать вид, что предметы в вашей комбинации единообразны. К сожалению для C#, но это действительно близко к VB
Настройка комбо в конструкторе:
comboBox1.Items.Add(new { Name = "a", Val = 35 });
comboBox1.Items.Add(new { Name = "b", Val = 30 });
comboBox1.Items.Add(new { Name = "c", Val = 256 });
comboBox1.ValueMember = "Val";
comboBox1.DisplayMember = "Name";
Затем по щелчку Ищу индекс элемента со значением 256:
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < comboBox1.Items.Count; i++)
{
if ((int)comboBox1.Items[i].GetType().GetProperty("Val").GetValue(comboBox1.Items[i]) = 256)
{
MessageBox.Show("index: " + i.ToString());
}
}
}
Здесь я использую отражение, чтобы получить значение свойства единообразного типа. Если вы знаете тип объекта, который вы используете - это еще проще - использовать DirectCast (это VB):
If DirectCast(comboBox1.Items(i), <known_type>).Val = 256 Then...
Главное здесь в том, что в этой строке, я получаю свойство элемента и получить его значение и сравнить к значению опции (в VB):
CInt(comboBox1.Items(i).GetType().GetProperty("Val").GetValue(comboBox1.Items(i))) = <your int value>