I have the following idea for your problem, but it will depend on you to use some conventions: the images should all be in the same format and the images related to the Color nameextension . For example, if you are using PNG as the image format, the eraser item would be rubber_azul.png . Here is the code I put up as an example:
Create a class ComboBoxItem
. It will serve to popular combos with key / value items:
public class ComboboxItem
{
public string Texto { get; set; }
public object Valor { get; set; }
public override string ToString()
{
return Texto;
}
}
Populate your combos using objects of the created class:
ComboboxItem itemBorracha = new ComboboxItem();
itemBorracha.Texto = "Borracha";
// Utilize como valor o nome da imagem do item
itemBorracha.Valor = "borracha.png";
ComboboxItem itemBorrachaAzul = new ComboboxItem();
itemBorrachaAzul.Texto = "Azul";
// utilize como valor o nome da cor usada no nome da imagem
itemBorrachaAzul.Valor = "azul";
comboCor.Items.Add(itemBorrachaAzul);
comboItem.Items.Add(itemBorracha);
private void comboItem_SelectedIndexChanged(object sender, EventArgs e)
{
// recupera o item selecionado do combo de itens
ComboboxItem itemSelecionado = (ComboboxItem)comboItem.SelectedItem;
// a propriedade Valor é a imagem do item
pictureBox1.Image = Image.FromFile(@"d:\img\" + itemSelecionado.Valor);
}
private void comboCor_SelectedIndexChanged(object sender, EventArgs e)
{
// Recupera os valores dos combos
ComboboxItem itemCor = (ComboboxItem)comboCor.SelectedItem;
ComboboxItem item = (ComboboxItem)comboItem.SelectedItem;
// substitui a extensão da imagem do item pelo nome da cor + extensão
string imagem = item.Valor.ToString().Replace(".png", String.Format("_{0}.png", itemCor.Valor));
pictureBox1.Image = Image.FromFile(@"d:\img\" + imagem);
}
In the code above, I'm assuming you're using the SelectedIndexChanged
control to show the image. Replace PictureBox
in the method parameter "d:\img\"
with the correct path of your images.