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

标签 c# forms visual-studio multiple-forms

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 值)一起显示。当我单击它时,需要在“查看”和“订购”事件中看到它。

这是第二种形式:

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; 
}

关于c# - 通过单击按钮将值从 form1 传递到 form2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49688591/

相关文章:

c# - Micrologix PLC 使用的低级协议(protocol)是什么?

java - 连接到外部数据库和发送 Web 请求时,C# .NET 和 Java 的安全性如何?

java - 如何检测文件类型的表单输入元素是否为空

javascript - 将常量文本添加到输入的文本

.net - 用于 VS11 开发人员预览版的 MySQL 提供程序

c# - 深入了解 EF。包含与加入

c# - 统一: One unit hitting another - C#

javascript - noUiSlider 在页面加载时设置值

visual-studio - 是否可以使用 vstest TestCaseFilter 实现 'not contains' 逻辑?

c - C Windows 中的简单链表