public class ComboboxItem { public string Text { get; set; } public string Value { get; set; } public override string ToString() { return Text; } } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { int selectedIndex = comboBox1.SelectedIndex; int selecteVal = (int)comboBox1.SelectedValue; ComboboxItem selectedCar = (ComboboxItem)comboBox1.SelectedItem; MessageBox.Show(String.Format("Index: [{0}] CarName={1}; Value={2}", selectedIndex, selectedCar.Text, selecteVal)); }
I'm adding them like:
ComboboxItem item = new ComboboxItem(); item.Text = cd.Name; item.Value = cd.ID; this.comboBox1.Items.Add(item);
I keep getting a NullReferenceExeption and not sure why. the text seems to show up just fine.
The ComboBox class searches for the specified object by using the IndexOf method.
A ComboBox control is an items control that works as a ListBox control but only one item from the collection is visible at a time and clicking on the ComboBox makes the collection visible and allows users to pick an item from the collection. Unlike a ListBox control, a ComboBox does not have multiple item selection.
Try this:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { ComboBox cmb = (ComboBox)sender; int selectedIndex = cmb.SelectedIndex; int selectedValue = (int)cmb.SelectedValue; ComboboxItem selectedCar = (ComboboxItem)cmb.SelectedItem; MessageBox.Show(String.Format("Index: [{0}] CarName={1}; Value={2}", selectedIndex, selectedCar.Text, selecteVal)); }
You are getting NullReferenceExeption
because of you are using the cmb.SelectedValue
which is null. the comboBox
doesn't know what is the value of your custom class ComboboxItem
, so either do:
ComboboxItem selectedCar = (ComboboxItem)comboBox2.SelectedItem; int selecteVal = Convert.ToInt32(selectedCar.Value);
Or better of is use data binding like:
ComboboxItem item1 = new ComboboxItem(); item1.Text = "test"; item1.Value = "123"; ComboboxItem item2 = new ComboboxItem(); item2.Text = "test2"; item2.Value = "456"; List<ComboboxItem> items = new List<ComboboxItem> { item1, item2 }; this.comboBox1.DisplayMember = "Text"; this.comboBox1.ValueMember = "Value"; this.comboBox1.DataSource = items;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With