2016-05-03 4 views
0

У меня есть объекты в моем списке, которые содержат экземпляр класса BankAccount (баланс, передачу сложите методы) и Wallet класс (имя, день рождения и т.д.)
мне нужно просмотреть определенные части информации (например, баланс) относительно выбранного объекта окна списка (lbAccounts).Получить информацию об объекте выбранного элемента ListBox

Объекты в Listbox:

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); 

ВОПРОС: Как получить баланс выбранного объекта ListBox?

+0

WPF? WebForms? WinForms? ASP.NET MVC? ...? –

+0

Вывести или передать результат выбранного объекта списка в тип [BankAccount]? – Hexie

+0

webform, C# и VS 2015 – Thisone

ответ

4

Вы получите объект из выбранного элемента списка.

BankAccount ba = lbAccounts.SelectedItem as BankAccount; 

Я надеюсь, что это вам поможет.

+0

Это прекрасно работает, спасибо за помощь. – Thisone

1

Вы можете бросить его, просто используя следующую операцию:

BankAccount currentAccount= lbAccounts.SelectedItem as BankAccount; 

Но я предпочитаю создавать список BankAccount и связать ListBox с помощью этого списка. так что вы можете легко взял выбранный элемент из списка: рассмотрим код ниже:

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(); 

SO связыванию часть закончена теперь нам нужно, чтобы получить бизнес-объект обратно из Listbox в соответствии с SelectedItem

IList<BankAccount> boundList = (IList<BankAccount>)lbAccounts.DataSource; 
BankAccount currentAccount= boundList[lbAccounts.SelectedIndex]; 
1

Включите выбранный список в объект BankAccount - затем используйте свойства по своему усмотрению.

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

Bonus MSDN ссылка: How to: Convert a ListBoxItem to a New Data Type

1

Вы можете безопасно бросить SelectedItem свойство ListBox.

Но убедитесь, что SelectedItem не null. Если в списке нет выбранного элемента, это свойство будет null.

var selected = listBox1.SelectedItem as Account; 
if (selected != null) 
; // use it 
Смежные вопросы