Shiridish
Shiridish

Reputation: 4962

Retrieve Listview items and display a column data as combo box display member and other value as value member

I have a list view with two columns- name and number. I want to read all these items and assign name to a combo box display member and number to value member. I have tried thinking the approach to follow but couldn't help myself. This is what I have tried. How should I proceed?

    public class numbers
    {
        public string name;
        public string number;
    }
    public class names : List<numbers>
    { 

    }
    names cname = new names();

    public void addcontacts()
    {
        foreach(ListView lv in bufferedListView1)
        {
         //No idea how to proceed

Upvotes: 1

Views: 2345

Answers (1)

Jan
Jan

Reputation: 2168

First you set your own type:

public class myContact
{
    public string Name { get; set; }
    public string Number { get; set; }

    public myContact(string name, string number)
    {
        this.Name = name;
        this.Number = number;
    }

    public override string ToString()
    {
        return Name;
    }
}

Then you transfer all items from the listview to the combobox like this:

foreach (ListViewItem item in listView1.Items)
{
    comboBox1.Items.Add(new myContact(item.Text, item.SubItems[0].Text));
}

This example assumes, that each listviewitem holds the name and that its first child holds the number.

When you add objects to the combobox, C# will use the objects' ToString() method to create something that you can actually see when the program is running. You override the default ToString() method with your own and only return the name. If you want to use the selection from the combobox you just cast the selectedItem back to myContact and can access the number there. Welcome to OOP :)

Upvotes: 1

Related Questions