Make a combobox take C#

Asked

Viewed 1,631 times

2

I doubt to make the combobox assume a value.

I have two combobox with the items 'low, medium and high' and I want that if I select low in the combobox it takes the value 0, if I select medium it takes 0.5 and if I select high it takes 1. And save them values in the BD.

2 answers

3

This is very simple, just follow the example below:

//Os objetos para serem utilizados
var objetos = new List<object>();

objetos.Add(new {valor = 0, nome = "Baixo"});
objetos.Add(new {valor = 0.5, nome = "Médio"});
objetos.Add(new {valor = 1, nome = "Alto"});

//É o nome da propriedade do objeto que será visível para o usuário
comboBox1.DisplayMember = "valor";
//É o nome da propriedade do objeto que servirá de valor
comboBox1.ValueMember = "nome";
comboBox1.DataSource = objetos;

And to get the value that was selected by the user just do this:

//Exemplo de como pegar o valor que foi selecionado pelo usuário
var valorSelecionado = (double)comboBox1.SelectedValue;
  • Thanks Richard, it helped a lot. Another question came up. When I pick the Selected item it brings td the line ({value = 1, name = "High"}). It is possible to take only what it contains in the displaymenber?

  • @Diegopaganini The Member display is the Displayed value, if you want to pick up the text that user selected just use comboBox1.Text or comboBox1.SelectedTex. The comboBox1.Selecteditem will return the whole object, now if you want only the value just use the comboBox1.Selectedvalue.

1

Pass objects in this case to Combobox:

// crie uma classe que represente sua medida
public class Medida
{
    public string Representacao { get; set; }

    public double Valor { get; set; }

    // IMPORTANTE: isto é usado pelo ComboBox
    public override string ToString()
    {
        return Representacao;
    }
}

Example in addition of items:

Medida[] medidas = new Medida[]
    {
        new Medida() {Representacao = "Alto", Valor = 0.75 },
        new Medida() {Representacao = "Médio", Valor = 0.50 },
        new Medida() {Representacao = "Baixo", Valor = 0.25 },
    };
this.comboBox1.Items.AddRange(medidas);

How to take the amount you want to update the database:

// após o usuário selecionar o item do ComboBox você pode pegar o valor a partir disso:
// TODO: validar se o item é nulo ou não
double valor = (comboBox1.SelectedItem as Medida).Valor;

Browser other questions tagged

You are not signed in. Login or sign up in order to post.