Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Combo box

Olá amigos,

conforme solicitado no exercício criei o combo box cbbTipoDeConta referente ao tipo de conta a ser cadastrada.

Para selecionar um item no combo box utilizei os códigos abaixo para testar:

Situação 1: Funciona mas gera aviso CS0252 - Comparação não intencional e pede para converter para string.

if (cbbTipoDeConta.SelectedItem == "Conta Corrente")
    novaConta = new ContaCorrente();

Situação 2: Não Funciona. Retorna nada ou null.

if (cbbTipoDeConta.SelectedText== "Conta Corrente")
    novaConta = new ContaCorrente();

Situação 3: Funciona e não gera aviso.

if (cbbTipoDeConta.Text== "Conta Corrente")
    novaConta = new ContaCorrente();

A situação 3 atende melhor visto que valida corretamente e não gera aviso, embora o aviso não implicar compilação. O mais curioso é que não necessita selecionar um item como nas situação 1.

2 respostas
solução!

Oi Daniel, tudo bem?

A propriedade SelectedItem retorna um object.

Quando você faz a comparação com o ==, é feita a comparação das referências (se as duas variáveis apontam para o mesmo objeto na memória). Como uma referência do tipo object conseguiria apontar para uma string ("Conta Corrente"), o C# permite a comparação mas te dá o warning avisando que você não está comparando valores, mas referências.

--

A propriedade SelectedText serve para pegar ou definir um texto para a parte editável do Combobox.

--

Já a propriedade Text contém o texto do item selecionado no Combobox. Essa propriedade é do tipo String.

Por isso você consegue fazer a comparação entre as duas Strings sem qualquer aviso. :)

Abraço!

Obrigado pelo esclarecimento Lucas.