通过单击按钮将值从 form1 传递到 form2 到 form2

Passing values from form1 to form2 via button click to form2

frmPlaceOrder 是我的 form1。我需要将这个表单中的名字、姓氏和地址传递给第二个表单,后者将执行其他功能。我不知道该怎么做。

namespace Lab1_OrderCake
{
public partial class frmPlaceOrder : Form
{
    public static CustomerInformation customer;
    public static Address address;

    public frmPlaceOrder()
    {
        InitializeComponent();
        customer = new CustomerInformation(txtFName.Text, txtLName.Text);
        address = new Address(txtAddress.Text, txtCity.Text, txtPC.Text, txtProvince.Text);

    }

    private void btnPlaceOrder_Click(object sender, EventArgs e)
    {


        DialogResult dlgMsg;
        if (txtFName.Text == "")
        {
            MessageBox.Show("Please enter first name", "Data Missing");
            txtFName.Focus();
            return;
        }
        if (txtLName.Text == "")
        {
            MessageBox.Show("Please enter Last name", "Data Missing");
            txtLName.Focus();
            return;
        }
        else
        {
            frmCakeOrder  newCust = new frmCakeOrder();
            this.Hide();
            newCust.ShowDialog();
            this.Close();

        }

    }
  }
}

第二种形式;在填写完第一个表格后,需要从 form1 中获取值并将其与第二个表格中的其他值(frmCakeOrder 值)一起显示。单击它时需要在 View 和 Order 事件中看到它。

这是第二种形式:

namespace Lab1_OrderCake
{
public partial class frmCakeOrder : Form
{

    Order cakeOrder;
    public List<Cake> cakeList;
    public frmCakeOrder()
    {
        InitializeComponent();
        cmbTraditionalCake.SelectedIndex = 0;
        cakeOrder = new Order();
        gbCustomCake.Visible = false;
        this.Size = new Size(700,360);
        cakeList = new List<Cake>();

    } 

    private void bttnOrder_Click(object sender, EventArgs e)
    {
        DialogResult dlgMsg;
        dlgMsg = MessageBox.Show(cakeOrder.ToString(), "Confirm Order", MessageBoxButtons.YesNo, MessageBoxIcon.Information);

        if (dlgMsg == DialogResult.Yes)
        {  
            MessageBox.Show(cakeOrder.PrintConfirmation());

        }
        else
        { 
            MessageBox.Show ("The order has not been placed");
        }
        bttnReset.Focus();
        cakeOrder.ClearCart();

    }

    private void radCustom_CheckedChanged(object sender, EventArgs e)
    {
        if (radCustom.Checked)
        {
            cmbTraditionalCake.Enabled = false;
            gbCustomCake.Visible = true;
        }
        else
        {
            cmbTraditionalCake.Enabled = true;
            gbCustomCake.Visible = false;
        }
    }

    private void btnView_Click(object sender, EventArgs e)
    {
        DialogResult dlgMsg;

        cakeOrder.NumOfCakes=1;
        dlgMsg = MessageBox.Show(cakeOrder.ToString(), "Your order: ", MessageBoxButtons.YesNo , MessageBoxIcon.Information);
        if (dlgMsg == DialogResult.No)
        {
            cakeOrder.ClearCart();
            MessageBox.Show("Please enter and confirm your order!");
  }



    private void btnAdd_Click(object sender, EventArgs e)
    {

        if (radCustom.Checked)
        {
            string flavour, occasion;
            flavour = occasion = "";
            int layers;

            //for flavor
            if (radBanana.Checked)
                flavour = "Banana";
            else if (radChocolate.Checked)
                flavour = "Chocolate";
            else if (radVanilla.Checked)
                flavour = "Vanilla";

            if (radTier2.Checked)
                layers = 2;
            else if (radTier3.Checked)
                layers = 3;
            else
                layers = 1;

            if (radGraduation.Checked)
                occasion = radGraduation.Text.TrimStart(new char[] { '&' });
            else if (radWedding.Checked)
                occasion = radWedding.Text.TrimStart(new char[] { '&' });
            else occasion = radAnniversary.Text.TrimStart(new char[] { '&' });
            cakeOrder.AddCake(new Custom(flavour, occasion, layers));
        }
        else
        {
            cakeOrder.AddCake(new Traditional(cmbTraditionalCake.SelectedItem.ToString()));
        }
        cakeList.Add(cakeOrder);
    }


}
}

有很多方法可以做到这一点。试试这个方法。

private void btnPlaceOrder_Click(object sender, EventArgs e) {
   string fname = textBox1.Text;
   frmCakeOrder frm = new frmCakeOrder(textBox1.Text);
   frm.Show();
} 

而在 frmCakeOrder 中,

public frmCakeOrder(string fname) {
   InitializeComponent(); 
   textBox1.Text = fname; 
}

可以在构造函数中传递数据:

public class Form1: from{
    //constructor
    public void Form1(){
    }

    public void button_click(){
        //Get the data
        var firstName = textFirstName.text;
        var secondName= textSecondName.text;
        var address= textAddress.text;
        //Pass the data on the constructor of Form2
        Form2 f2 = new Form2(firstName,secondName, address);
        f2.show();
    }
}

public class Form2: Form{
    //constructor with data or parameters
    public void Form2(string firstName, string lastName, string Address){
         //do dosomething with the data
         txtFirstName.text = firstName;
    }
}

*抱歉,如果它有 sintaxys 错误....但就是这样。