2016-04-25 2 views
1

Я работаю над программой для школы, я пытаюсь передать строки между формами в C# с помощью конструктора. метод, который я использую, работал ранее при передаче от 1 до 2, но теперь не работает, передавая форму 2 на 3. Код предназначен для математической викторины из десяти вопросов. БлагодаряПередача строк через конструктор. Ошибка

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. Вы получаете параметр из конструктора Form2, но вы его никогда не устанавливали.
  • score является int, а не string.
  • Кажется, вы пытаетесь передать параметры, но обработчик события Click. Это невозможно. Вместо этого используйте переменные класса.

Используйте это для Form2 конструктора:

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

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

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

И это для Form3 конструктора:

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) 
{ } 

Затем вызовите конструктор так:

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

Тогда исправить ваш Click обработчик событий:

private void button1_Click(object sender, EventArgs e) 
Смежные вопросы