C#-在表单显示上更新组合框

本文关键字:更新 组合 显示 表单 C#- | 更新日期: 2023-09-27 18:21:07

首先,我使用Sql Server Local DBLinq to Sql。我有两种表格Form1和Form2。Form1中有一个comboBox,每次显示时我都想更新它。Form2插入新记录,Form1用于搜索记录。当我回到Form1时插入一条记录之后。它不会更新列表。我尝试过表格1的显示激活以及表格2的onClosing事件,但没有成功。此外,我还尝试过为comboBox输入事件。虽然数据库已更新,但comboBox未更新。这就是我更新comboBox 的方式

_Namelist.Clear();
_Namelist.Add("Select a Name");
_Namelist.AddRange((from p in context.Peoples
                          select p.Name).ToList());
comboBox1.DataSource = _Namelist;

我创建了一个单独的类,使我的主窗体FORM1成为singleton。为了显示Form1,我使用了这个

FormProvider.Form_1.Show();

在这种情况下,我如何更新我的comboBox?

Update_1

如果我尝试搜索(在Form1中)我插入的新数据(在Form2中),那么它会完美地找到记录,只是不会更新comboBox。

Update_2

我刚做了一个新的

public class Database
{
    static DataContext context;
    public static List<string> getNames()
    {
        context = new DataContext();
        List<string> _names = new List<string>();
        _names.Add("Select a Name");
        _names.AddRange((from p in context.People
                                   select p.Name).ToList());
        return _names;
    }
}

在Form1的任何事件调用中调用此函数就是在执行任务。有人能告诉我为什么它在我上面在问题中描述的场景中不起作用吗?

C#-在表单显示上更新组合框

我想这可能与LINQ中的数据缓存有关。在Form2中创建新记录后,您是否尝试刷新DataContext或刷新?

试试这个,让更新Form1上组合框的方法公开,然后在Form2的关闭事件上调用方法:

因此,在Form1:上

public void PopulateNamelistComboBox()
{
    _Namelist.Clear();
    _Namelist.Add("Select a Name");
    _Namelist.AddRange((from p in context.Peoples
                      select p.Name).ToList());
    comboBox1.DataSource = _Namelist;
}

然后在构造函数的Form2上,添加事件处理程序来调用关闭事件:

public Form2()
{
    Closed += Form2_Closed;
}

然后在Form2:上添加方法

private void Form2_Closed(object sender, EventArgs e)
{
    FormProvider.Form_1.PopulateNamelistComboBox();
}

您必须尝试Delegate:我正在粘贴与您的场景相关的工作项目的URL

https://drive.google.com/file/d/0B893d39kVeIvcGhjUG80ZG05OWc/edit?usp=sharing