2

我有一个类,其中包含String一个名称和一个intID 号:

public class Item
{
    public int IDNumber { get; set; }
    public String Name  { get; set; }
}

我有一个List<Item>用于创建BindingList<Item>. 这BindingList<Item>是我有数据绑定DataSource的。ComboBox我有Display Member当前作为名称和Value Member当前作为 IDNumber。

我可以更改,Name但是当我这样做时,值ComboBox.SelectedText变为“”。更清楚地说,名字是“戴夫”。用户输入“约翰”。我希望将SelectedText其更改为“John”,但它却变成了“”。

我试过使用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只有在使用该字段之前单击一次后,这才会起作用,SelectedText而我希望在进行更改时对其进行更新。

有谁知道我该如何解决这个问题?

谢谢。

4

2 回答 2

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);
 }
}  

然后确保您的组合框选择了某些内容并尝试 selectedtext

于 2012-07-10T17:48:31.377 回答
1

使用 comboBox.SelectedValue

所以你必须设置它的 DisplayMember 和 ValueMember

comboBox.DisplayMember="Name";
comboBox.ValueMember="IDNumber";

最后设置你的数据源

于 2012-07-10T15:23:39.580 回答