Obtener información del objeto del elemento del cuadro de lista seleccionado
Tengo objetos en mi cuadro de lista que contienen una instancia de la BankAccount
clase (saldo, transferencia, métodos de retiro) y Wallet
clase (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?
Obtendrá el objeto del elemento seleccionado del cuadro de lista.
BankAccount ba = lbAccounts.SelectedItem as BankAccount;
Espero que te ayude.
Puedes emitirlo simplemente usando la siguiente operación:
BankAccount currentAccount= lbAccounts.SelectedItem as BankAccount;
Pero prefiero que crees una Lista BankAccount
y 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];
Transmita el cuadro de lista seleccionado a un BankAccount
objeto 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