【问题标题】:C# Refresh DataGridView with another FormC# 用另一个表单刷新 DataGridView
【发布时间】:2014-03-11 13:39:25
【问题描述】:

我遇到了无法刷新具有DataGridView 的表单的问题。 我打开一个名为 MaintenanceForm 的表单。 在这里,我将选择一辆车,给出公里数,以及添加产品的选项。 如果我单击添加产品按钮,此表单将保持打开状态,而另一个名为 AddProducts 的表单将打开。在此表单中,我将从将添加到最终列表框中的产品列表中进行选择。如果我单击保存,这些项目将转到我的 BindingList 并填充我的网格。 我已经通过首先关闭我的第一个表单并用我的第二个表单重新打开它来测试这一点。网格已填充。 如何在不关闭第一个表单的情况下填充我的网格? 以下是我正在使用的方法

第二个表单上的保存按钮:

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();
}

填充我的网格的方法:

public void FillDataGridView(BindingList<Product> products)
{
    dGvProducts.DataSource = null;
    dGvProducts.AutoGenerateColumns = false;
    dGvProducts.AllowUserToAddRows = false;
    dGvProducts.DataSource = products;
    dGvProducts.Refresh();

}

在 AddProductsForm 打开时,MaintenanceForm 仍然打开?

提前致谢

【问题讨论】:

  • 为什么要在保存按钮中创建MaintenanceForm 的新实例?保存按钮不是 AddProducts 表单的一部分,在您的情况下,它是 MaintenanceForm 的子级。

标签: c# forms datagridview


【解决方案1】:

感谢用户 JDB,我已经解决了我的问题。

我现在创建了一个 LogicalParent 方法,而不是创建一个新实例(感谢 Junaith 纠正我)。

public AdminForm LogicalParent { get;放; }

有了这个,我可以访问我父表单的所有方法和函数,并且刷新没有问题。

【讨论】:

    猜你喜欢
    • 2012-05-25
    • 2015-01-16
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 2012-06-08
    相关资源
    最近更新 更多