How to bind a listbox with a Class?

Hi experts

i have a class with 2 properties
eg : Name and firstname

in my application this class is sent from business services and i have to add it to my listbox in the GUI

so when each time i'll receive the class (name and firstname) from business layer, i have to show in my listbox the FIRSTNAME and put in the item tag or wherever else the NAME to keep reference

the goal is when the user will double_click on the item, i can retrieve the NAME from the FIRSTNAME clicked

can you help me?

Who is Participating?

Improve company productivity with a Business Account.Sign Up

Michael_DConnect With a Mentor Commented:
in your class override ToString method to return whatever you want to be shown in the list box
then Add the WHOLE object to the list box - you don't have to store refference in the Tag property.
listbox.DisplayMember = "FirstName";
listbox.ValueMember = "Name";
listbox.DataSource = class object returned from the web service

on click of the button
"listbox.SelectedValue" will give the name
Dnx_7Author Commented:
doesn't work...

i got exception... and plus, i cannot use datasource because i have to keep the previous data...

it's like the business layer will send step by step

first notification
myApp <== business will send ("david", "nameOfDavid")

second notification
myApp <== business will send ("Henry", "nameOfHenry")

but i have to keep david from the first notification...

 Dim pf As PluginFounded = DirectCast(e, PluginFounded)
            lb.DisplayMember = "Interface"
            lb.ValueMember = "Path"
            lb.DataSource = pf

Open in new window

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

We will work on the keeping previous data later. But what exception are you getting?
Dim p as Person = BusinessLayer.GetPerson



in your DoubleClick event

Dim p as Person = DirectCast(lb.SelectedItem, Person)

Access all properties of selected person


Dnx_7Author Commented:
that's ok, the Michael_D's solution is correct!

i didn't see it sorry

thank you to both of you !
Dnx_7Author Commented:
Jaime OlivaresSoftware ArchitectCommented:
Michael_D suggestion is better, don't use data binding just add the entire object instead of a string:

class MyBusinessClass
     string Name;
     string FirstName;
     public override string ToString()
            return FirstName;  // this is what you will see in listbox

MyBusinessClass obj;  // fill it somewhere
listbox1.Items.Add(obj);   // add the entire object, not a string

// .... later

MyBusinessClass obj = (MyBusinessClass)listbox.SelectedItem;    // casting is required
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.