2015-05-18 5 views
-3

Я делаю простую игру, в которой вы летите вокруг корабля, уклоняясь от астероидов, пока они не ударят вас, и вы взорваетесь. У меня есть форма для игры, а затем, когда вы получаете удар через 5 секунд (я использую таймер), он будет закрывать эту форму и открывать новую форму (EndGameForm). Я покажу свой код, но, похоже, сбой, и мои знания в C# очень ограничены.Рекордная форма для передачи данных

private void GameEndTimer_Tick(object sender, EventArgs e) 
{ 
     this.Visible = false; 
     EndGameForm gform = new EndGameForm(); 
     gform.Show(); 
     GameEndTimer.Enabled = false; 
     var frm2 = new EndGameForm(ScoreLabel.Text.ToString()); 
     frm2.Show(); 
} 

Это было в первой форме, сохранив текст с меткой оценки и открыв новую форму.

public EndGameForm(string s) 
{ 
     InitializeComponent(); 
     Score1Label.Text = s; 
} 

Это было во второй форме, напомнив о сохранении и установке новой метки Highscore. Код

Ошибка: Ошибка 1 'SemesterProject.EndGameForm' не содержит конструктор, который принимает аргументы 0 \ HHS-FS2 \ Home $ \ Студенты \ 10 Grade \ 985832 \ CP C# \ SemesterProject \ SemesterProject \ GameForm.cs 82 33 SemesterProject

+4

Ошибка не требует пояснений ... Вы передали аргумент 'string' в качестве объявления конструктора класса EndGameForm. Но в его призвании никаких аргументов не было передано ... – Roboticist

ответ

0

Вам необходимо передать что-то конструктору класса EndgameForm, так как он должен основываться на вашем дизайне.

Как правило, это может быть сделано с помощью класса строки поля из класса вызывающего абонента:

private string _tobeSentAsArgument {get; set;} 

после его инициализации, где когда-либо вы хотите, она готова к использованию:

private void GameEndTimer_Tick(object sender, EventArgs e) 
{ 
    this.Visible = false; 
    EndGameForm gform = new EndGameForm(this._tobeSentAsArgument); 
    gform.Show(); 
    GameEndTimer.Enabled = false; 
    var frm2 = new EndGameForm(ScoreLabel.Text.ToString()); 
    frm2.Show(); 
} 
Смежные вопросы