我有一个由数据源(值和ID)填充的组合框
comboBox_Degree.DataSource = ds.Tables["Field"];`
comboBox_Degree.DisplayMember = "Field_Degree";
comboBox_Degree.ValueMember = "Field_ID";
现在我想在SelectedIndexChanged事件发生时检索id。但当我把它转换为int时,我有这样的错误。
int fid = Convert.ToInt32(comboBox_Degree.SelectedValue.ToString());
错误:
输入字符串的格式不正确。
如何将此值转换为整数?
答案 0 :(得分:8)
使用此:
int fid;
bool parseOK = Int32.TryParse(comboBox_Degree.SelectedValue.ToString(), out fid);
答案 1 :(得分:5)
我经常做类似
的事情int fid=0;
try {
fid=int.Parse(comboBox_Degree.SelectedValue.ToString());
} catch (Exception e)
{
//Whatever you want to do when it is not an int
}
答案 2 :(得分:0)
您可以使用以下代码解决您的问题:
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
答案 3 :(得分:0)
我遇到了同样的问题,我发现先设置cbxExampleComboBox.DataSource
然后再设置cbxExampleComboBox.ValueMember
和cbxExampleComboBox.DisplayMember
是调用cbxExampleComboBox.SelectedValue
时返回对象的原因
如果cbxExampleComboBox.ValueMember
的类型为cbxExampleComboBox.DisplayMember
,则先设置cbxExampleComboBox.DataSource
和int
然后cbxExampleComboBox.SelectedValue
将返回int
。
将代码更改为以下内容,应假设int
为Field_ID
类型,返回结果为int
comboBox_Degree.ValueMember = "Field_ID";
comboBox_Degree.DisplayMember = "Field_Degree";
comboBox_Degree.DataSource = ds.Tables["Field"];
答案 4 :(得分:0)
我遇到了类似的问题。但是,问题是由于组合框设置阶段触发了事件处理程序。因此,在组合框设置(数据源,ValueMember和DisplayMember分配)设置之后,我将SelectedIndexChanged
EventHandler添加从Form.Designer
移到了FormLoad
事件。
// Example Combobox for Roles
DataTable dtRoles = new DataTable();
dtRoles = labDAO.GetRoles();
cbxRoleID.DataSource = dtRoles;
cbxRoleID.ValueMember = "ID";
cbxRoleID.DisplayMember = "Name";
cbxRoleID.SelectedIndexChanged += cbxRoleID_SelectedIndexChanged;