C#-在表单显示上更新组合框
本文关键字:更新 组合 显示 表单 C#- | 更新日期: 2023-09-27 18:21:07
首先,我使用Sql Server Local DB和Linq 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的任何事件调用中调用此函数就是在执行任务。有人能告诉我为什么它在我上面在问题中描述的场景中不起作用吗?
我想这可能与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