当我更改列表框的数据源时,所有项目都被清除,当将新数据加载到此列表框时,它保持清晰。 我有另一个新的ListBox,它具有相同的刷新代码但是完全刷新。
private void RefreshContacts()
{
this.ListContacts.DataSource = null;
this.ListContacts.DataSource = this.contacts;
this.BoxCountContacts.Text = this.ListContacts.Items.Count.ToString();
}
任何人都知道如何修复列表框以免被清除和窃听?
以下是两个列表框的完整刷新代码
private Contact[] contacts, feed; private Boolean isFeed;
internal ArcFeed()
{
this.InitializeComponent();
this.contacts = this.feed = new Contact[0];
}
private void RefreshForm(Boolean isFeed)
{
if (isFeed)
{
this.RefreshFeed();
}
else
{
this.RefreshContacts();
}
}
private void RefreshContacts()
{
this.ListContacts.DataSource = null;
this.ListContacts.DataSource = this.contacts;
this.BoxCountContacts.Text = this.ListContacts.Items.Count.ToString();
}
private void RefreshFeed()
{
this.ListFeed.DataSource = null;
this.ListFeed.DataSource = this.feed;
this.BoxCountFeed.Text = this.ListFeed.Items.Count.ToString();
}
private void OpenFile()
{
if (this.isFeed)
{
this.BoxFileFeed.Text = this.DialogOpen.FileName;
this.feed = ArcBuzz.Load(this.DialogOpen.FileName);
}
else
{
this.BoxFileContacts.Text = this.DialogOpen.FileName;
this.contacts = ArcBuzz.Load(this.DialogOpen.FileName);
}
this.RefreshForm(this.isFeed);
}
所有代码都经过调试并且正确地遵循它,我没有看到任何错误,正确的列表框的数据源被设置和更改。
答案 0 :(得分:0)
只是为了确定,您是否检查过contacts
集合中确实有项目?
此外,如果您有两个列表框,请仔细检查您是否在每个刷新代码部分中使用了正确的列表框。
听起来很愚蠢,但像这样的愚蠢错误在很多时候都被忽视了。通过数据绑定,它通常会像这样小而停止工作。