获取组合框的选定值
Posted
技术标签:
【中文标题】获取组合框的选定值【英文标题】:Getting selected value of a combobox 【发布时间】:2011-10-17 13:57:45 【问题描述】: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));
我将它们添加为:
ComboboxItem item = new ComboboxItem();
item.Text = cd.Name;
item.Value = cd.ID;
this.comboBox1.Items.Add(item);
我不断收到 NullReferenceExeption,但不知道为什么。文本似乎显示得很好。
【问题讨论】:
【参考方案1】:试试这个:
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));
【讨论】:
我认为ComboBoxItem
类仅在 WPF 项目中可用。
OP 在他们的帖子中声明了它。很惊讶 System.Windows.Forms 命名空间中没有一个...或者我错过了什么?【参考方案2】:
你得到NullReferenceExeption
因为你使用的是空的cmb.SelectedValue
。 comboBox
不知道您的自定义类 ComboboxItem
的值是什么,所以要么这样做:
ComboboxItem selectedCar = (ComboboxItem)comboBox2.SelectedItem;
int selecteVal = Convert.ToInt32(selectedCar.Value);
或者更好的是使用数据绑定,例如:
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;
【讨论】:
在不使用数据源的情况下,无论如何都不能将comboBox.SelectedValue 用于自定义项目吗?例如。如果您使用数据源,则无法将项目删除或添加到组合框项目。【参考方案3】:我遇到了类似的错误,我的班级是
public class ServerInfo
public string Text get; set;
public string Value get; set;
public string PortNo get; set;
public override string ToString()
return Text;
但是我所做的是,我将我的类强制转换为 ComboBox 的 SelectedItem 属性。所以,我将拥有所选项目的所有类属性。
// Code above
ServerInfo emailServer = (ServerInfo)cbServerName.SelectedItem;
mailClient.ServerName = emailServer.Value;
mailClient.ServerPort = emailServer.PortNo;
我希望这对某人有所帮助! 干杯!
【讨论】:
【参考方案4】:试试这个:
private void cmbLineColor_SelectedIndexChanged(object sender, EventArgs e)
DataRowView drv = (DataRowView)cmbLineColor.SelectedItem;
int selectedValue = (int)drv.Row.ItemArray[1];
【讨论】:
【参考方案5】:SelectedValue
的问题是没有转换为整数。这是主要问题,因此使用以下代码 sn-p 将帮助您:
int selectedValue;
bool parseOK = Int32.TryParse(cmb.SelectedValue.ToString(), out selectedValue);
【讨论】:
【参考方案6】:试试这个:
int selectedIndex = comboBox1.SelectedIndex;
comboBox1.SelectedItem.ToString();
int selectedValue = (int)comboBox1.Items[selectedIndex];
【讨论】:
OP 有一个 C# 问题。你的答案看起来像 C++。【参考方案7】:您必须将所选项目转换为您的自定义类 (ComboboxItem) 试试这个:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
ComboBox cmb = (ComboBox)sender;
int selectedIndex = cmb.SelectedIndex;
string selectedText = this.comboBox1.Text;
string selectedValue = ((ComboboxItem)cmb.SelectedItem).Value.ToString();
ComboboxItem selectedCar = (ComboboxItem)cmb.SelectedItem;
MessageBox.Show(String.Format("Index: [0] CarName=1; Value=2", selectedIndex, selectedCar.Text, selecteVal));
【讨论】:
以上是关于获取组合框的选定值的主要内容,如果未能解决你的问题,请参考以下文章