我有一个带有Id,Name列的组合框。我已将这些值添加到带有数据表的组合框:
DataTable.Rows.Add(1, "Name1");
DataTable.Rows.Add(2, "Name2");
Id列应该很长。但是,当我尝试获取Id值时,它表示无法转换为long:
long id;
id = this.comboBox1.ValueMember;
怎么做?
感谢。
@BlueMonkMN,几乎就在那里,但当我尝试MessageBox.Show打印1(来自我上面的数据表值)
MessageBox.Show(comboBox1.SelectedValue.ToString());
但这一行
id = (long)(comboBox1.SelectedValue);
抛出强制转换异常?
为什么1无法转换为长?
答案 0 :(得分:3)
首先,确保您需要一个长整数。在DataTable中将常规整数(int)指定为Systemn.Int32,并且通常在32位操作系统上最佳。该整数的范围是-2,147,483,648到2,147,483,647。如果实际上你需要更大的整数,那么请继续使用DataTable中的System.Int64,并在代码中使用。
接下来,您尝试访问组合框的错误属性。您需要访问SelectedValue属性。 ValueMember是确定SelectedValue属性将公开绑定对象的哪个列/属性的属性。
以下是一些代码,说明了如何配置组合框: (来自InitializeComponent的生成代码)
this.dataTable1BindingSource = new System.Windows.Forms.BindingSource(this.components);
this.dataSet11 = new WindowsFormsApplication1.DataSet1();
//
// comboBox1
//
this.comboBox1.DataSource = this.dataTable1BindingSource;
this.comboBox1.DisplayMember = "Name";
this.comboBox1.ValueMember = "id";
//
// dataTable1BindingSource
//
this.dataTable1BindingSource.DataMember = "DataTable1";
this.dataTable1BindingSource.DataSource = this.dataSet11;
这里有一些代码说明了如何从组合框中检索选定的值,如果实际上你想要id是一个长整数:
long id = (long)(comboBox1.SelectedValue);
答案 1 :(得分:1)
ValueMember是一个字符串datatpye属性,它表示列的名称。 OP必须使用SelectedValue属性。