将变量从一种形式带到另一种形式

时间:2014-02-19 01:43:41

标签: c#

我想将表格1中的变量(金额和利率)纳入表格3。 我需要将表单1中的变量放入表单3中的标签中,或者将表单1中的变量转换为表单3.有没有办法将变量从一个表单传递到另一个表单以及如何?

namespace InvestmentCalc
{
public partial class Form1 : Form
{
    decimal Amount;
    decimal WeekInterest;
    decimal TwoWeekInterest;
    decimal MonthInterest;
    decimal ThreeMonthInterest;

    public Form1()
    {
        InitializeComponent();
    }

    private void nextButton_Click(object sender, EventArgs e)
    {
        ParseItems();
        Formchange();
    }
        private void ExitButton_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void ClearButton_Click(object sender, EventArgs e)
        {

        }

    //Methods

        public void ParseItems()
        {
            WeekInterest = decimal.Parse(WeekIntTextBox.Text);
            TwoWeekInterest = decimal.Parse(tWeekIntTextBox.Text);
            MonthInterest = decimal.Parse(monthIntTextBox.Text);
            ThreeMonthInterest = decimal.Parse(threeMonthIntTextBox.Text);
            Amount = decimal.Parse(DepositTextBox1.Text);
        }

        public void Formchange()
        {
            Form3 Check = new Form3();
            Check.Show();
            Hide();
        }                                                
    }

3 个答案:

答案 0 :(得分:0)

是的,当然,但您必须寻找更高级别的解决方案。首先,实例化第一个表格,然后例如显示模态,当调用返回时,从该表单中读取属性并将它们传递给下一个。

int amount, interest;
using (Form1 form = new Form1()) 
{
    form.ShowDialog();
    amount = form.Amount;     // these, of course, have to be public
    interest = form.Interest; // make the fields private and expose them via properties
    [...]
}

using (Form2 form = new Form2(amount, interest))
{
    form.ShowDialog();
}
表单关闭时返回

ShowDialog(),因此这可能是最简单的事情。

根据您需要传递多少个值,创建一个结构或类来交付它们可能是一个很好的策略。

[编辑:]与其他答案相比,这将产生一系列表格。将当前表单传递给新表单的构造函数虽然不一定,但更多的是模态对话方法。如果那确实是你所要求的,那么你需要知道的是你可以用一个需要参数的构造函数来编写一个表单。

答案 1 :(得分:0)

  

有没有办法将变量从一个表单传递到另一个表单以及如何?感谢

当然,最简单的方法是将您的变量定义为public。然后当您打开第二个表单时,将当前的Form实例传递给Show方法:

Form3 f3 = new Form3();
f3.Show(this);

然后在Form3内置Owner到你的Form1,并像这样访问你的变量

((Form1)Owner).VariableName;

答案 2 :(得分:0)

如果你想将许多值移动到另一个表单,首先在form3中创建构造函数(在这里例如从form1发送两个字符串到form3)

Public Form3(object[] data) :this()
{
string s1 = data[0].Tostring();
string s2 = data[1].Tostring();
label1.Text = s1;
label2.Text = s2;
}

在form1中,现在我们可以创建可以接收数据的form3,stringA将作为s1发送到form3,stringB将作为s2发送到form3。

private void button_Click(object sender, Eventargs e)
{
stringA = "my value";
stringB = "my another value";
object[] data = {stringA, stringB};
Form3 frm = new Form3(data);
frm.Showdialog();
}