Obtener información del objeto del elemento del cuadro de lista seleccionado

Resuelto asked hace 8 años • 4 respuestas

Tengo objetos en mi cuadro de lista que contienen una instancia de la BankAccountclase (saldo, transferencia, métodos de retiro) y Walletclase (nombre, fecha de nacimiento, etc.)
. Necesito ver ciertas partes de información (como saldo) sobre el objeto del cuadro de lista seleccionado. (lbCuentas).

Objetos en el cuadro de lista:

DateTime birth = Convert.ToDateTime("01/01/1970");

Wallet account = new Wallet("Bob", "Smith", birth);
BankAccount account1 = new BankAccount(account);
account1.DepositFunds(5000);
BankAccount account2 = new BankAccount(account);
account2.DepositFunds(300);

//Adding accounts to listbox
lbAccounts.Items.Add(account1);
lbAccounts.Items.Add(account2);

PREGUNTA: ¿Cómo obtengo el saldo de un objeto de cuadro de lista seleccionado?

 avatar May 03 '16 11:05
Aceptado

Obtendrá el objeto del elemento seleccionado del cuadro de lista.

BankAccount ba = lbAccounts.SelectedItem as BankAccount;

Espero que te ayude.

Jugal Panchal avatar May 03 '2016 04:05 Jugal Panchal

Puedes emitirlo simplemente usando la siguiente operación:

BankAccount currentAccount= lbAccounts.SelectedItem as BankAccount;

Pero prefiero que crees una Lista BankAccounty vincules el cuadro de lista usando esta lista. para que pueda tomar fácilmente el elemento seleccionado de la lista: considere el siguiente código:

List<BankAccount> AccountList= new List<BankAccount>();
AccountList.Add(new BankAccount(){fName="Bob", lName="Smith", dob=birth });
AccountList.Add(new BankAccount(){fName="foo", lName="bar", dob=birth });
//Populate the list here
// Bind the list box according to the type of application you are using
// here i use asp.net
lbAccounts.DataTextField = "fName";
lbAccounts.DataValueField = "fName";
lbAccounts.DataBind();

Entonces, la parte vinculante ha terminado, ahora necesitamos recuperar el objeto comercial del cuadro de lista de acuerdo con el elemento seleccionado.

IList<BankAccount> boundList = (IList<BankAccount>)lbAccounts.DataSource;
BankAccount currentAccount= boundList[lbAccounts.SelectedIndex];
sujith karivelil avatar May 03 '2016 04:05 sujith karivelil

Transmita el cuadro de lista seleccionado a un BankAccountobjeto y luego use las propiedades como desee.

var balance = ((BankAccount)lbAccounts.SelectedItem).Balance 

Enlace adicional de MSDN: Cómo: convertir un ListBoxItem en un nuevo tipo de datos

Hexie avatar May 03 '2016 04:05 Hexie