列表框在数据源更改期间清除所有项目

时间:2010-07-08 10:19:06

标签: c# winforms arrays listbox datasource

当我更改列表框的数据源时,所有项目都被清除,当将新数据加载到此列表框时,它保持清晰。 我有另一个新的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);
    }

所有代码都经过调试并且正确地遵循它,我没有看到任何错误,正确的列表框的数据源被设置和更改。

1 个答案:

答案 0 :(得分:0)

只是为了确定,您是否检查过contacts集合中确实有项目?

此外,如果您有两个列表框,请仔细检查您是否在每个刷新代码部分中使用了正确的列表框。

听起来很愚蠢,但像这样的愚蠢错误在很多时候都被忽视了。通过数据绑定,它通常会像这样小而停止工作。