0

所以我刚刚通读了 MSDN 上的事件教程,在我的程序中应用它时遇到了一些问题。我想知道这里是否有人可以帮我一把。

所以我有两种形式,一个叫做父母,一个叫做frmInventory孩子frmNewProduct。孩子有一个名为 的按钮btnAccept。目前,有一个名为btnAccept_Click订阅此事件的订阅者。现有订阅者位于子窗体上。我想为此事件添加第二个订阅者,但此订阅者将在父表单上。这是我的父表单上的功能:

public void updateInventoryFromChild(object sender, EventArgs e)
{
    //Not sure how to get this working either, but that is another story
    _inventroy = (frmNewProduct)sender._inventory
}

这是我尝试将函数订阅到我孩子的事件:

this.btnAccept.Click += new System.EventHandler((frmInventory)this.Parent.updateInventoryFromChild);
4

2 回答 2

3

正如我在您之前的一篇文章中所说,我认为 ShowDialog() 会更好,例如:

class ChildForm : Form {
    private Inventory _inventory;

    public Inventory MyInventory {
        get {
            return _inventory;
        }
    }

    private void btnAccept_Click(object sender, EventArgs e) {
        _inventory = <set_inventory_here>;
        DialogResult = System.Windows.Forms.DialogResult.OK;
    }
}

..在你的父母形式..

public void updateInventoryFromChild(object sender, EventArgs e)
{
    ChildForm childForm = new ChildForm();
    if (childForm.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
        _inventory = childForm.MyInventory;
    }
}
于 2012-07-31T03:44:51.380 回答
1

您应该在子表单的构造函数中有以下代码!

this.btnAccept.Click += new System.EventHandler(this.Parent.updateInventoryFromChild);
于 2012-07-31T03:39:31.803 回答