Terix
Terix

Reputation: 1387

Get value from listBox using List

I am using a ListBox and the data is a class:

private class Duration
{
    public int Value { get; set; }
    public string Label { get; set; }
}

I bind the class in this way:

var durations = new List<Duration>() 
  {
    new Duration() { Value = 5, Label = "5 minutes" }, 
    new Duration() { Value = 10, Label = "10 minutes" }, 
    new Duration() { Value = 15, Label = "15 minutes" }, 
    new Duration() { Value = 30, Label = "30 minutes" }, 
    new Duration() { Value = 45, Label = "45 minutes" }, 
    new Duration() { Value = 60, Label = "1 hour" }, 
    new Duration() { Value = 90, Label = "1 hour and half" } 
  };
this.listTime.DataSource = durations;
this.listTime.DisplayMember = "Label";
this.listTime.ValueMember = "Value";

Everything works fine and the labels are show. When i go to read the selected value, I am not able to recover the value of the selected item.

I was expecting to be able to do this:

int value = listTime.SelectedItems[0].Value;

or at least this:

Duration value = listTime.SelectedItems[0];

but this gives me error, what I am doing wrong? How is the right way to get the value of the selected item on the ListBox?

Upvotes: 0

Views: 2716

Answers (2)

Abbas
Abbas

Reputation: 14432

if (listTime.SelectedIndex != -1)
{
    var item = listTime.SelectedItem as Duration;
    //or as suggested by 'Stu'
    var item = (Duration)listTime.SelectedItem;
    MessageBox.Show(item.Value.ToString());
}

Upvotes: 3

user1968030
user1968030

Reputation:

If you use Listbox this code is Ok:

listTime.Items[0].Value

Upvotes: 1

Related Questions