谁能帮助我与我的代码在c#它总是输出0在消息框

本文关键字:输出 消息 帮助 我的 代码 | 更新日期: 2023-09-27 18:18:08

感谢你们的快速响应,所以这是我现在的…

我的问题是,它需要我在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,我只有一个构造函数

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

谁能帮助我与我的代码在c#它总是输出0在消息框

当您显示您的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;
}

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

你为什么需要两个呢?为什么不直接执行Form2 from = new Form2(answer);