0

そのため、MSDN のイベント チュートリアルを読んだところ、プログラムに適用する際に問題が発生しました。ここにいる誰かが私に手を貸してくれるかどうか疑問に思っていました。

したがって、 という親frmInventoryと という子の 2 つのフォームがありfrmNewProductます。子には というボタンがありますbtnAcceptbtnAccept_Click現在、このイベントには subscribed という 1 人のサブスクライバーがいます。既存のサブスクライバーは子フォームにあります。このイベントに 2 番目のサブスクライバーを追加したいのですが、このサブスクライバーは親フォームになります。親フォームの関数は次のとおりです。

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

以前の投稿の 1 つで述べたように、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 に答える