1
resposta

Como exibir os mesmos cadastros no combobox de transf

Eu estou tentando criar uma tela dinâmica em que oculta o titular da conta origem no combobox da conta destino. Ex: No combobox Origem eu tenho Mario e Fernando. Mas quando seleciono Mario, eu quero que só apareça Fernando no combobox Destino. Tentei fazer isso usando as seguintes opções:

private void OpçõesParaComboDestino(Conta contaSelecionada)
        {
            foreach(Conta conta in contas)
            {
                if(contaSelecionada != conta)
                {
                    comboDestino.Items.Add(conta.Titular.Nome);
                }
            }

        }

Mas não deu certo pois quando tento fazer a transferencia para o outro Titular, isso acaba preenchendo o combobox. Tentei também usando o método remover. Mas dá o mesmo problema. Qual opção eu teria para somente "ocultar" o titular selecionado do combobox de Origem no combobox de Destino?

1 resposta

Olá Gabriela,

a comparação utilizando o != compara o endereço das referências que podem ser diferentes. Para fazer a comparação dos atributos do objeto e verificar se de fato os objetos representam a mesma conta é preciso utilizar o método Equals.

A condição do if ficaria: if(!contaSelecionada.Equals(conta))

Além disso, será preciso sobrescrever o método Equals na sua Conta para algo do tipo:

public override bool equals(Object obj) {
      Conta outraConta = (Conta) obj;
      return this.numero == outraConta.getNumero() && this.agencia.equals(outraConta.getAgencia());
}

que será explicado mais à frente no capítulo da Classe Object do Curso C# III