我有一个球员号码列表(int list),我也有一些圈数(int laps)。每次玩家完成一圈时,我都必须在文本框中输入玩家的号码。如果有效,在文本框中输入的玩家号码将被发送到列表中。但是,每个玩家的编号不能超过圈数。
我是 Windows 窗体的新手,所以我只使用列表来解决问题,我见过人们使用字典来解决类似的问题,但我不太确定如何结合它来解决这个问题。
private void textBox2_TextChanged(object sender, EventArgs e)
{
bool result;
int RunnerNumberInOrder;
repeat2 = (getLaps2 * rows2);
textBox2.Focus();
//ReadPlayerNumber is the list that contains the list of the runners in the race.
//PlayerNumberInOrder int list is a global list and it is the list that the runners number order gets sent to if valid
result = int.TryParse(textBox2.Text, out RunnerNumberInOrder); //checks if the value entered is an integer
if (result == false || !ReadRunnerNumbers2.Contains(RunnerNumberInOrder)) //if the value entered is not an integer an error message will pop up and ask to enter a valid number
{
label3.Text = "Please enter a valid player number from the list";
}
else
{
if (RunnerOrder.Contains(RunnerNumberInOrder))
{
count++;
}
if (count == getLaps2)
{
count = 0;
label3.Text = "max laps for this runner has been entered";
invalid.Add(RunnerNumberInOrder); //invalid is an int list that I used to send the numbers of the runners that have completed all laps.
textBox2.Clear();
return;
}
}
if (invalid.Contains(RunnerNumberInOrder))
{
MessageBox.Show("Max number of laps for this runner has been entered");
textBox2.Clear();
}
if (result == true && ReadRunnerNumbers2.Contains(RunnerNumberInOrder) && !invalid.Contains(RunnerNumberInOrder))
{
RunnerOrder.Add(RunnerNumberInOrder); //if number entered is valid, the it is added to the global variable
PlayerNumbersEntered++;
label8.Text = RunnerNumberInOrder.ToString();//counts how many valid car numbers have been enterted
textBox2.Clear();
}
}
我的代码有点用,但是当圈数为 3 时,它有时只允许一个数字 2 次,有时会允许超过输入的圈数。当玩家的圈数等于圈数并且不应再允许该数字时,我希望弹出一条错误消息。我还必须使用 text_change。提前为帮助喝彩。