【发布时间】:2014-05-22 11:14:36
【问题描述】:
我想创建一个简单的列表框,它绑定到一个链表。
该列表在任何给定时间只能包含 5 个项目。
添加新项时,应检查项数是否为>= 5,然后删除最后一项并将新项添加到顶部。
为此,我制作了这个测试应用:
public partial class Form1 : Form
{
LinkedList<string> list01 = new LinkedList<string>();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
list01.AddFirst("AAA");
list01.AddFirst("BBB");
list01.AddFirst("CCC");
listBox1.DataSource = new BindingSource(list01, "");
}
private void button1_Click(object sender, EventArgs e)
{
if (list01.Count >= 5)
list01.RemoveLast();
list01.AddFirst(DateTime.Now.ToString());
listBox1.DataSource = new BindingSource(list01, "");
}
}
看来,每当我添加新项目时,我必须不断将数据源设置为新的绑定源,以便添加的项目显示在 UI 上
有没有办法初始化一个绑定源,当其中的项目发生变化时,自动更新列表框,而无需在每次添加新项目时设置数据源?
【问题讨论】:
-
有什么原因不能使用
BindingList<T>或ObservableCollection<T>吗?还是你不知道? -
我知道
BindingList<T>并且知道它没有我想要的方法AddTop和RemoveLast -
如何从
BindingList<T>中删除最后一项并将一项添加到顶部/第一个? -
自己实现这些方法并不难。