如何将组合框的选定值转换为整数?

时间:2013-11-13 21:00:30

标签: c# winforms combobox

我有一个由数据源(值和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());

错误:

  

输入字符串的格式不正确。

如何将此值转换为整数?

5 个答案:

答案 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.ValueMembercbxExampleComboBox.DisplayMember是调用cbxExampleComboBox.SelectedValue时返回对象的原因

如果cbxExampleComboBox.ValueMember的类型为cbxExampleComboBox.DisplayMember,则先设置cbxExampleComboBox.DataSourceint然后cbxExampleComboBox.SelectedValue将返回int

将代码更改为以下内容,应假设intField_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;