C#使用另一个表单刷新DataGridView
无法刷新包含C#使用另一个表单刷新DataGridView,c#,forms,datagridview,C#,Forms,Datagridview,无法刷新包含DataGridView的表单时出现问题。 我打开一个叫做MaintenanceForm的表单。 在这里,我将选择一辆车,给出公里数,以及添加产品的选项。 如果我单击AddProducts按钮,此表单将保持打开状态,而另一个表单也将打开,称为AddProducts。在这个表单中,我将从我将添加到最终列表框中的产品列表中进行选择。如果单击“保存”,这些项目将转到我的绑定列表并填充我的网格。 我已经通过先关闭第一个表单,然后用第二个表单重新打开来测试这一点。网格已填充。 如何在不关闭第一
DataGridView
的表单时出现问题。
我打开一个叫做MaintenanceForm的表单。
在这里,我将选择一辆车,给出公里数,以及添加产品的选项。
如果我单击AddProducts按钮,此表单将保持打开状态,而另一个表单也将打开,称为AddProducts。在这个表单中,我将从我将添加到最终列表框中的产品列表中进行选择。如果单击“保存”,这些项目将转到我的绑定列表并填充我的网格。
我已经通过先关闭第一个表单,然后用第二个表单重新打开来测试这一点。网格已填充。
如何在不关闭第一个表单的情况下填充网格?
以下是我正在使用的方法
我的第二张表单上的“保存”按钮:
private void btnOpslaan_Click(object sender, EventArgs e)
{
lstTotal = new BindingList<Product>();
foreach (object product in listBtotal.Items)
{
lstTotal.Add((Product)product);
}
MaintenanceForm maintenanceForm = new MaintenanceForm();
maintenanceForm.FillDataGridView(lstTotal);
this.Close();
}
private void btnOpslaan\u单击(对象发送方,事件参数e)
{
lstTotal=新绑定列表();
foreach(listBtotal.Items中的对象产品)
{
lstotal.添加((产品)产品);
}
MaintenanceForm MaintenanceForm=新的MaintenanceForm();
maintenanceForm.FillDataGridView(LSTotal);
这个。关闭();
}
方法来填充我的网格:
public void FillDataGridView(BindingList<Product> products)
{
dGvProducts.DataSource = null;
dGvProducts.AutoGenerateColumns = false;
dGvProducts.AllowUserToAddRows = false;
dGvProducts.DataSource = products;
dGvProducts.Refresh();
}
public void FillDataGridView(BindingList产品)
{
dGvProducts.DataSource=null;
dGvProducts.AutoGenerateColumns=false;
dGvProducts.allowUserToAddress=false;
dGvProducts.DataSource=产品;
dGvProducts.Refresh();
}
在AddProductsForm打开时,MaintenanceForm仍然打开
提前感谢感谢用户JDB,我已经解决了我的问题 我现在正在创建一个LogicalParent方法,而不是创建一个新实例(感谢Junaith纠正我的错误) 公共AdminForm LogicalParent{get;set;}
有了它,我可以访问父窗体的所有方法和函数,刷新也没有问题。为什么要在保存按钮内创建一个新的
MaintenanceForm
实例?保存按钮不是吗?它是AddProducts
表单的一部分,在您的情况下,它是MaintenanceForm
的子项。