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

インスタンスを表示すると、 Form2Form2の新しいインスタンスが作成されます。これは必要ありませんが、代わりに、既存の form2 に回答を設定する必要があります。

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

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

これは、2 番目のコンストラクターが不要であることも意味します。

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

また、2 番目の代替コンストラクターを含めることにした場合は、以下も呼び出すことが重要であることに注意してください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 をインスタンス化します。

とにかく、なぜ2つ必要なのですか?Form2 frm = new Form2(answer); を実行しないのはなぜですか。

于 2013-06-12T16:05:21.300 に答える