C# 添加后刷新列表框

C# 添加后刷新列表框,c#,winforms,listbox,C#,Winforms,Listbox,我在C#中有一个列表框,并希望在添加新项(通过新表单对话框打开)后刷新它 这是我的代码,它不工作 private void showAllItems() { itemList = Db.getAllItems(); lb_itemList.DataSource = itemList; } private void showItemPreview(object sender, EventArgs e) { s

我在C#中有一个
列表框
,并希望在添加新项(通过新表单对话框打开)后刷新它

这是我的代码,它不工作

    private void showAllItems()
    {
        itemList = Db.getAllItems();
        lb_itemList.DataSource = itemList;
    }

    private void showItemPreview(object sender, EventArgs e)
    {
        string curItem = lb_itemList.SelectedItem.ToString();
        briefPreviewList = Db.getItemBriefPreview(curItem);
        string itemInfos = string.Join(",", briefPreviewList.ToArray());
        string[] infos = itemInfos.Split(',');
        l_itemDB.Text = curItem;
        l_CategoryDB.Text = infos[0];
    }

    private void b_addItem_Click(object sender, EventArgs e)
    {
        int uid = 1;
        AddItem addItemForm = new AddItem(uid);
        addItemForm.ShowDialog();
        CurrencyManager cm = (CurrencyManager)BindingContext[itemList];
        cm.Refresh();

    }

我假设,当您插入一个新项目时,它会存储到数据库中,如果是这种情况,那么您需要做的就是重置数据源:

private void b_addItem_Click(object sender, EventArgs e)
{
    int uid = 1;
    AddItem addItemForm = new AddItem(uid);
    addItemForm.ShowDialog();
    addItemForm.Dispose();

    this.showAllItems();
 }

我假设,当您插入一个新项目时,它会存储到数据库中,如果是这种情况,那么您需要做的就是重置数据源:

private void b_addItem_Click(object sender, EventArgs e)
{
    int uid = 1;
    AddItem addItemForm = new AddItem(uid);
    addItemForm.ShowDialog();
    addItemForm.Dispose();

    this.showAllItems();
 }

你说我的代码不起作用是什么意思?
ListBox
是否未更新,或者是否出现异常或其他情况?@nolonar-ListBox未更新,但没有异常。但是cr41g14的答案是:)你是什么意思?
ListBox
是否未更新,或者是否出现异常或其他情况?@nolonar-ListBox未更新,但没有异常。但是cr41g14的答案是:啊,dispose函数帮了我很多忙,非常感谢:)啊,dispose函数帮了我很多忙,非常感谢:)