0

谢谢你们的快速反应,所以这就是我现在所拥有的..

我的问题是,它需要我在 Form2 f2 = new Form2(); 中添加参数 部分,但如果我这样做了,我会收到此错误错误“字段初始值设定项无法引用非静态字段、方法或属性”

对于我的 Form1,我没有编辑这个 ^

public partial class Form1 : Form
    {

        Form2 f2 = new Form2();
        int userInputValue;
        string userInputValueConverted;
        string formulaShow = "";
        public double answer = 0.0;
        public double output;


        public Form1()
        {
            InitializeComponent();
        }




            f2.DuAnswer = output;
            f2.Formula.Text = formulaShow;
            f2.Show();

对于我的 FORM2,我只有 1 个构造函数

public double duAnswer;

public Form2(double output)
{
    InitializeComponent();
    duAnswer = output;
}



public double DuAnswer
{
    get
    {
        return duAnswer;
    }

    set
    {
        duAnswer = value;
    }
}

对于我的结果按钮

 private void result_Click(object sender, EventArgs e)
        {
            MessageBox.Show("" + duAnswer.ToString("F2"));
        }
4

2 回答 2

5

当您显示您的Form2实例时,您正在创建一个新的 Form2 实例。这不是必需的,但是,您需要在现有的 form2 上设置答案:

// Don't create this
// Form2 outP = new Form2(output);

f2.DuAnswer = output;
f2.Formula.Text = formulaShow;
f2.Show();

这也意味着您不需要第二个构造函数:

// public Form2(double output)
// {
//    duAnswer = output;
// }

另请注意,如果您确实决定包含第二个替代构造函数,那么它还调用很重要InitializeComponent()

public Form2(double output)
{
   InitializeComponent(); // This is critical for a form
   duAnswer = output;
}

您也可以使用构造函数链接来完成此操作:

public Form2(double output)
   : this()
{
   duAnswer = output;
}
于 2013-06-12T16:01:26.063 回答
0

您没有将 answer 的值传递给输出,而是使用未分配任何值的输出变量来实例化 Form2。

为什么你仍然需要其中两个?为什么不直接做 Form2 frm = new Form2(answer);

于 2013-06-12T16:05:21.300 回答