我的班级名称为String
,ID号码为int
:
public class Item
{
public int IDNumber { get; set; }
public String Name { get; set; }
}
我有List<Item>
个用于创建BindingList<Item>
的{{1}}。 BindingList<Item>
是DataSource
的{{1}}我已经进行了数据绑定。我目前将ComboBox
作为名称,Display Member
目前作为IDNumber。
我可以更改Value Member
但是当我这样做时Name
的值变为“”。更清楚地说,名字是“戴夫”。用户输入“John”。我希望ComboBox.SelectedText
更改为“John”,但它变为“”。
我尝试过使用SelectedText
:
INotifyPropertyChanged
只有在使用public class Item : INotifyPropertyChanged
{
private String name;
public int IDNumber { get; set; }
public String Name
{
get
{
return name;
}
set
{
this.name = value;
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Name"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
}
字段之前单击ComboBox
之后才能执行此操作,而我希望在进行更改时更新它。
有谁知道如何解决这个问题?
感谢。
答案 0 :(得分:2)
示例:
private BindingSource bs;
private SetupBinding()
{
List<Item> data = new List<Item>();
//Get Data
bs = new bindingsource();
bs.datasource = data;
combobox.datasource = bs;
comboBox.DisplayMember="Name";
comboBox.ValueMember="IDNumber";
}
private ShowMyMessage()
{
MessageBox.Show(this, message, caption, buttons,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button1,
MessageBoxOptions.RightAlign);
if (bs != null)
{
bs.resetbindings(false);
}
}
然后确保您的组合框已选择并尝试选择文本
答案 1 :(得分:1)
使用comboBox.SelectedValue
因此您必须设置其DisplayMember 和ValueMember
喜欢
comboBox.DisplayMember="Name";
comboBox.ValueMember="IDNumber";
最后设置数据源