如何在Form1中调用Form2

时间:2017-10-02 13:12:41

标签: c#

我正在做一个有7种形式的商店,表单1是商店的基础,带有图片框和一个文本框,说明我应该付多少钱。当我点击图片框中时,例如在T恤中,它会打开一个新表格,其中包含一些信息和一个按钮,说明"添加到购物车"。 基本上我想点击按钮"添加到购物车"然后Form2关闭并返回到表单1并在文本框中(显示我应该支付多少)显示该值。

1 个答案:

答案 0 :(得分:1)

表单就像任何其他对象一样,你可以传递对它们的引用,并像对待任何其他方法一样调用它们。

例如,假设您在Form1上公开了一个接受该值并更新UI的方法:

public void UpdatePayAmount(double amount)
{
    // use the supplied value to update your text box
}

然后,您需要在点击“添加到购物车”按钮时从Form2调用该方法。类似的东西:

form1Instance.UpdatePayAmount(someAmountValue);

因此,您的Form2代码需要在某处变量中引用Form1的实例。由于Form2现在取决于Form1,因此将该要求放在其构造函数中的合理位置。也许填充私人领域:

private Form1 form1Instance;

public Form2(Form1 form1)
{
    form1Instance = form1;
}

现在Form2在创建Form1时需要引用Form2实例,因此当单击按钮时,它可以调用该实例上的方法。因此,当您在Form1代码中创建form2 = new Form2(this); form2.Show(); 时,您将提供该实例:

var root = JsonConvert.DeserializeObject<RootObject>(json);
var pickups = new Pickups {
    pickups = root.pickups.Select(kvp =>
        new Pickup {
            Group = int.Parse(kvp.Key),
            Values = kvp.Value
        }
    ).ToArray()
};