4

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

错误:

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

如何将此值转换为整数?

4

5 回答 5

8

用这个:

int fid;
bool parseOK = Int32.TryParse(comboBox_Degree.SelectedValue.ToString(), out fid);
于 2013-11-13T21:08:40.870 回答
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
    }
于 2013-11-13T21:04:34.083 回答
1

您可以使用此代码来解决您的问题:

 int id = Convert.ToInt32(comboBox_Degree.SelectedValue.GetHashCode());
于 2018-08-02T23:35:06.213 回答
1

我遇到了同样的问题,我发现设置第cbxExampleComboBox.DataSource一个然后设置第二cbxExampleComboBox.ValueMembercbxExampleComboBox.DisplayMember是调用时cbxExampleComboBox.SelectedValue返回对象的原因。

如果类型是,则设置cbxExampleComboBox.ValueMemberand cbxExampleComboBox.DisplayMemberthencbxExampleComboBox.DataSource将返回。intcbxExampleComboBox.SelectedValueint

将代码更改为以下应该返回结果,int假设它Field_IDint类型

comboBox_Degree.ValueMember = "Field_ID";
comboBox_Degree.DisplayMember = "Field_Degree";
comboBox_Degree.DataSource = ds.Tables["Field"];
于 2019-11-12T15:10:58.007 回答
0

我遇到了类似的问题。但是,问题是由于组合框设置阶段触发了事件处理程序。因此,在组合框设置(DataSource、ValueMember 和 DisplayMember 分配)之后,我将SelectedIndexChangedEventHandler 添加从事件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;
于 2020-09-28T15:52:34.057 回答