如何以编程方式更改DataBinding索引位置

时间:2015-10-08 09:43:20

标签: c# winforms data-binding generic-list

如何以编程方式更改DataBinding索引位置?

例如:我有一个名为 list<> MYLIST<T>集合,另外两个控件位于 TEXTBOX1 LISTBOX1 两个控件都与MYLIST<T>绑定。

在执行时,LISTBOX控件从MYLIST填充,当我点击LISTBOX1-Item时,TEXTBOX1.Text按照MYLIST的选定索引进行更改,因为两个控件都与MY LIST绑定。

我想以编程方式设置列表索引位置2。就像当我点击一个按钮所以TEXTBOX1.Text按照列表索引[2]改变时,单击LISTBOX1的第二项时会出现相同的行为。

我试过了。选择但没有运气,

这是示例代码:

public partial class Form1 : Form
{
    public sealed class Person
    {
        public string name { get; set; }
    }
    private List<Person> myList = new List<Person>();
    public Form1()
    {
        InitializeComponent();

        myList.Add(new Person(){name = "MyName1"});
        myList.Add(new Person(){name = "MyName2"});
        myList.Add(new Person(){name = "MyName3"});

        textBox1.DataBindings.Add(new Binding("Text", myList, "name"));

        listBox1.DataSource = myList;
        listBox1.DisplayMember = "name";
        listBox1.ValueMember= "name";
    }

    private void button2_Click(object sender, EventArgs e)
    {
        myList.Select(person => person.name.StartsWith("MyName2"));
    }
}

1 个答案:

答案 0 :(得分:2)

你可以使用这样的东西

BindingContext[myList].Position = myList.FindIndex(person => person.name.StartsWith("MyName2"));

您可能会发现有用的内容可以阅读以下MSDN链接BindingContext Class
 Control.BindingContext Property