C# 有人能帮我用c语言编写代码吗?它总是在消息框中输出0

C# 有人能帮我用c语言编写代码吗?它总是在消息框中输出0,c#,C#,谢谢你们的快速反应,这就是我现在所拥有的 我的问题是,它要求我在Form2 f2=new Form2()中添加参数;但是如果我这样做了,我得到了这个错误“字段初始值设定项不能引用非静态字段、方法或属性” 对于我的表格1,我没有编辑这个^ public partial class Form1 : Form { Form2 f2 = new Form2(); int userInputValue; string userInputValueC

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

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

对于我的表格1,我没有编辑这个^

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

当您显示
Form2
实例时,您正在创建一个新的Form2实例。不需要这样做,但您需要在现有表单2上设置答案:

// 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)
   : this()
{
   duAnswer = output;
}

当您显示
Form2
实例时,您正在创建一个新的Form2实例。不需要这样做,但您需要在现有表单2上设置答案:

// 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)
   : this()
{
   duAnswer = output;
}

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


你为什么还需要两个呢?为什么不直接做Form2 frm=新Form2(答案)

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



你为什么还需要两个呢?为什么不直接做Form2 frm=新Form2(答案)

请只粘贴描述您的问题的代码调试器向您显示了什么?没有错误,它只给了我0个值我清理了您的问题,Lazyberezosky说得很有道理。尝试粘贴缩小问题范围的代码。不管怎么说,我很肯定里德·科斯佩发现了你们的问题,所以若他真的发现了,别忘了把答案标记为已被接受。另外,我建议你看看我们的帮助部分:如果你还没有:)谢谢^很抱歉请记住>。请只粘贴描述你的问题的代码调试器向你显示了什么?没有错误,它只给了我0值我整理了你的问题,Lazyberezosky说得很好。尝试粘贴缩小问题范围的代码。不管怎么说,我很肯定里德·科斯佩发现了你们的问题,所以若他真的发现了,别忘了把答案标记为已被接受。另外,我建议你看看我们的帮助部分:如果你还没有:)谢谢^您正在重用已创建的实例(
f2
),而不是创建第二个实例。为此,我遇到了一个新问题,我按照您的指示,设置f2.Formula.Text=formulaShow;我只在顶部有这个,form2f2=newform2();,然而,我得到了一个字段初始值设定项无法引用的错误…@MaryGraceIsananViaje我是说,将此放在您的
submit\u单击
方法中-只需注释掉创建新表单的行,并添加我的代码,它就可以工作了。不要试图把它放在类的顶部…我只是按照你告诉我的做了,但是我的调试器要求我在Form2 f2=new Form2()中添加参数;你可以查看我编辑的代码帖子吗?那么我如何在不创建新实例的情况下调用form2?@MaryGraceIsananViaje你已经创建了一个实例:
form2 f2=new form2()
您正在重用已创建的实例(
f2
),而不是创建第二个实例。为此,我遇到了一个新问题,我按照您的指示,设置f2.Formula.Text=formulaShow;我只在顶部有这个,form2f2=newform2();,然而,我得到了一个字段初始值设定项无法引用的错误…@MaryGraceIsananViaje我是说,将此放在您的
submit\u单击
方法中-只需注释掉创建新表单的行,并添加我的代码,它就可以工作了。不要试图把它放在类的顶部…我只是按照你告诉我的做了,但是我的调试器要求我在Form2 f2=new Form2()中添加参数;你能检查我编辑的代码帖子吗?如果只实例化1个表单,它会给我一个错误,它说字段初始值设定项不能引用非静态字段…………就像Reed说的,你真的不需要再次实例化表单。只需将Form2的duAnswer更改为public,将answer变量分配给这个public变量,最后执行f2.Show()(或.ShowDialog())如果只实例化1个表单,它会给我一个错误,它表示字段初始值设定项不能引用非静态字段……….就像Reed所说的,您实际上不需要再次实例化表单。只需将Form2的duAnswer更改为public,将answer变量分配给这个public变量,最后执行f2.Show()(或.ShowDialog())