2016-04-25 9 views
1

私は学校のためのプログラムに取り組んでいます、私はコンストラクタを使用してC#でフォーム間で文字列を転送しようとしています。私が使用しているメソッドは以前from1から2に移ったときに以前は働いていましたが、現在form2を3に移すことはできません。コードは10の質問の数学クイズ用です。おかげコンストラクタを使用して文字列を転送する。エラー

public Form2() 
    { 
     InitializeComponent(); 
    } 

    public Form2(string name, string age) 
    { 
     InitializeComponent(); 

     int Score; 

     int QNUM; 




    } 



     private void Form2_Load(object sender, EventArgs e) 
     { 

      } 

     private void label5_Click(object sender, EventArgs e) 
     { 

     } 

      private void button1_Click(int answer, string name, string age, int score, int QNUM, object sender, EventArgs e) 
      { 

       if (age == "Year 3") 
       { 
        Random rnd = new Random(); 
        int Number1 = rnd.Next(1, 51); 
        int Number2 = rnd.Next(1, 51); 
        int Answer = Number1 + Number2; 
        label4.Text = Convert.ToString(Number1 + " + " + Number2); 
       } 

       if(textBox1.Text == Convert.ToString(answer)) 
       { 
        score = score + 1; 
       } 
       if (textBox1.Text == Convert.ToString(answer)) 
       { 
        score = score + 1; 
       } 
        QNUM = QNUM + 1; 
        label2.Text = Convert.ToString(QNUM); 
       if (QNUM == 1) 
       { 
        button1.Text = "Next"; 
       } 
       if (QNUM == 9) 
       { 
        button1.Text = "Finish"; 
       } 

       if (QNUM == 11) 
       { 
        Form3 Name2 = new Form3 (name, score); 
        Name2.Show(); 
       } 
     } 
     }  
} 

私もあなたは良いスタートをした

public Form3() 
    { 
     InitializeComponent(); 
    } 
    public Form3(string name, string score) 
    { 
     InitializeComponent(); 
     { 

     } 
    } 

答えて

1

三番目の形式でコードを配置しているが、あなたのコードに問題があります。

  • nameはしていないが、メソッドの範囲はbutton1_Clickです。 コンストラクタからパラメータを受け取りますが、決して設定しません。
  • scoreは、stringではなく、intです。
  • Clickイベントハンドラを介してパラメータを渡そうとしているようです。それは不可能です。代わりにクラス変数を使用してください。あなたのForm3コンストラクタの

    private string Name {get;set;} 
    private int Score {get;set;} 
    
    public Form2(string name, string age) 
    { 
        InitializeComponent(); 
    
        this.Name = name; 
        this.Score = 0; 
    } 
    

    そして、この:

Form2コンストラクタの使用これを次に修正

Form3 Name2 = new Form3 (this.Name, this.Score); 

private string Name {get;set;} 
private int Score {get;set;} 

public Form3(string name, int score) 
{ 
    InitializeComponent(); 

    this.Name = name; 
    this.Score = score; 
} 

public Form3() : this("defaultName", 0) 
{ } 

は次に、このようなコンストラクタを呼び出しますあなたのClickイベントハンドラ:

private void button1_Click(object sender, EventArgs e) 
関連する問題