将2个或更多字段添加到C#编码的值成员

我有4个主键字段的表。 我将其加载到使用C#创建的WinForm应用程序中的下拉列表中。

在下拉列表的TextChanged事件中,我有一定的TextBox,我想填充表中为下一个选择的某个字段填充的信息。

所以我说这个表有4个字段。 我可以将所有4个字段都从数据集中转换为值成员 ,或者您能告诉我这是否不可能吗?

谢谢。

Datatable dt=dba.getName(); cmb_name.ValueMember="id"; cmb_name.DisplayMember="name"; cmb_name.DataSource=dt;

这是正常的格式..但我有更多的关键字段..所以我需要添加更多的关键字段..

您可以使用DataSource属性将源数据绑定到ComboBox(例如,实体列表或DataTable等),然后将ComboBox的DisplayMember属性设置为要显示的字段的(字符串)名称。

在用户选择了一个Item之后,您可以将SelectedItem回原始行数据类型(Entity,DataRow等 – 它仍然与您输入的类型相同),然后您可以检索4个复合键到原始项目。

这样就可以完全避免SelectedValue问题。

编辑

填充如下:

 cmb_name.DisplayMember = "name"; cmb_name.DataSource = dt; // Ignore ValueMember and Selected Value entirely 

当您想要检索所选项目时

 var selectedRow = (cmb_name.SelectedItem as DataRowView ); 

现在您可以检索PK的4个值,例如selectedRow["field1"], selectedRow["field2"], selectedRow["field3"] etc

但是,如果您想要向用户显示 4列(即与表键无关),请参阅此处如何绑定ComboBox以使显示成员连接2个源数据表字段?

 cmb_name.DisplayMember = "name"; cmb_name.DataSource = dt; DataRowView selectedRow = (cmb_name.SelectedItem as DataRowView ); 

结果将在这里:

 MessageBox.Show(selectedRow.Row[0].ToString()); MessageBox.Show(selectedRow.Row[1].ToString()); MessageBox.Show(selectedRow.Row[2].ToString()); MessageBox.Show(selectedRow.Row[3].ToString()); ..... 

如果你想从ComboBox中获取一些数据到List你可以使用这样的东西

 List ListOfComboData = new List(); ListOfComboData = yourComboBox.Items.OfType().ToList(); 

我不知道这是不是你的意思,因为问题结构很差。 我希望这有帮助…

编辑:将所选文本放入某些TextBox使用中

 yourTextBox.Text = youComboBox.Text; 

ComboBoxSelectedIndexChanged事件中。

您可以使用以下类来遵循此方法:

 public class ComboBoxItem { public string Text { get; set; } public object[] PrimaryKey { get; set; } } private void Test() { ComboboxItem item = new ComboboxItem(); item.Text = "Item text1"; item.PrimaryKey = new object[] { primaryKey1, primaryKey2, primaryKey3, primaryKey4}; comboBox1.Items.Add(item); comboBox1.SelectedIndex = 0; MessageBox.Show((comboBox1.SelectedItem as ComboboxItem).Value.ToString()); }