【问题标题】:how to refresh datagrid view from another form in c#如何在c#中从另一个表单刷新数据网格视图
【发布时间】:2017-08-03 04:12:25
【问题描述】:

首先我想问一下如何从另一个表单刷新 Datagrid 视图,因为在下面的代码中我无法从第二个表单刷新它。

这就是我在“收银员交易表单”中刷新数据网格视图的方式。

public void loadData()
    {
        var load = (from x in db.tbltransaction
                      join z in db.tblproduct
                      on x.product_ID equals z.ID
                      where x.status.Equals(0)
                      select new
                      {
                          TransactionID = x.belanjaID,
                          ProductID = x.produk_ID,
                          ProductName = z.namaBarang,
                          quantity = x.jumlahBarang,
                          Subtotal = x.subtotal
                      });
        dgvtransaction.DataSource = load;
        dgvtransaction.Columns[0].Visible = false;
    }

不。我想要做的是当我以第二种形式添加数据并关闭它时(所以事件是--> FormClosed on “Cashier Search Product Form ") 可以在“收银员交易表”中加载“dgvtransaction”。

这是到目前为止第二个表单的代码,用于在关闭后在第一个 dgv 上加载数据。

Cashier Transaction Form pk;
    private void Cashier Search Product Form_FormClosed(object sender, FormClosedEventArgs e)
    {
        pk.loadData();
    }

错误是“对象引用未设置为对象的实例。”

感谢您的帮助。

【问题讨论】:

    标签: c# forms datagrid


    【解决方案1】:

    您正在创建父表单的新实例,但您需要传递对原始表单的引用。

    public class CashierSearchProductForm
    {
        CashierTransactionForm pk;
        public CashierSearchProductForm(CashierTransactionForm pk)
        {
            this.pk = pk;
        }
    
        private void CashierSearchProduct Form_FormClosed(object sender, FormClosedEventArgs e)
        {
            pk.loadData();
        }
    
        ...
    }
    
    ...
    
    var csp = new CashierSearchProductForm(this);
    

    更好的是,只需从原始表单订阅 FormClosed 事件:

    var csp = new CashierSearchProductForm(this);
    csp.FormClosed += (s,e) => pk.loadData();
    

    【讨论】:

    • 所以我应该把 var csp = new CashierSearchProductForm(this); ??谢谢@Grant
    • 感谢@Grant .. 通常我只放这个 if (kcp == null || kcp.IsDisposed){ kcp = new kasircariproduk(this); } kcp.Show();所以,这对我来说太新鲜了
    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多