.net 关闭模式窗体后刷新父窗体中的数据

.net 关闭模式窗体后刷新父窗体中的数据,.net,winforms,.net,Winforms,我有一个表单,它有一个FlowLayoutPanel,其中填充了显示产品的UserControl列表。每个UserControl都有一个按钮,打开另一个表单,我用它编辑数据库中的产品 我的问题是,在数据库中更改数据或关闭模式对话框后,我不知道如何获取FlowLayoutPanel中的数据进行刷新。 是否可以模拟DataGridView和datasource的行为,在数据库中的每次更改中,我都会在FlowLayoutPanel中获得相应的数据 这是我用来用控件填充FlowLayoutPanel的代

我有一个表单,它有一个
FlowLayoutPanel
,其中填充了显示产品的
UserControl
列表。每个
UserControl
都有一个按钮,打开另一个表单,我用它编辑数据库中的产品

我的问题是,在数据库中更改数据或关闭模式对话框后,我不知道如何获取FlowLayoutPanel中的数据进行刷新。

是否可以模拟DataGridView和datasource的行为,在数据库中的每次更改中,我都会在FlowLayoutPanel中获得相应的数据

这是我用来用控件填充FlowLayoutPanel的代码
如果需要,我会添加更多代码

var result=await_obavijest.GetAll();
foreach(结果中的var x)
{
ucObavijest pp=新ucObavijest();
pp.lblNaslov.Text=x.Naslov;
pp.lblID.Text=x.ObavijestId.ToString();
pp.lblDatumVrijeme.Text=x.VrijemeObjave.ToString();
flpObavijesti.Controls.Add(pp);
}

加载表单时,您可能有一些方法,如
getProductsRows()
一种方法是在子表单关闭时调用该方法。如果产品列表很大,则性能非常差

另一种方法是在关闭模式窗体时保留修改过的产品的ID,调用
getProductRowById(ID)
获取新数据,只更新更改过的行并刷新网格/列表

但由于以上所有方法都是实现数据绑定的惰性方法,因此最好使用后一种方法

基本上,您只需要在加载时绑定数据,更新数据(只是更改的行),重新绑定数据,这将刷新以显示新数据

例如,如果您的源是用户字符串列表

List<string> users = GetUsers();
BindingSource source = new BindingSource();
source.DataSource = users;
dataGridView1.DataSource = source;
更新:由于绑定是一个概念,不仅限于其他类型组件的DataGridView,因此也可以使用实现绑定的UserControl来实现

users = GetUsers(); //Update your data object
source.ResetBindings(false);