C#维护以更新列表的内容

时间:2019-03-15 12:20:24

标签: c# list

尝试维护列表内容时遇到问题。完成游戏后,用户详细信息将存储在列表的第一个位置内,但是如果另一个用户玩游戏,以前的用户详细信息将替换为新的详细信息。我认为,在单击高分表格按钮时会出现问题打开一个新表单,导致列表的内容设置为null。

第一个用户: https://cdn.discordapp.com/attachments/176014540268371968/556088180466647061/unknown.png 第二用户: https://cdn.discordapp.com/attachments/176014540268371968/556088457311682609/unknown.png

此问题是否有可能的解决方案。任何帮助将不胜感激。

public partial class MainMenu : Form
{
    private void HighScoresButton_Click(object sender, EventArgs e)
    {
        HighScoresMenu HighScoresMenu = new HighScoresMenu(newScore, newPoints, PlayersName);
        HighScoresMenu.Show();
    }

    public static List<Player> GetPlayers(float newScore, float newPoints, string PlayersName)
    {
        var players = new List<Player>();
        var newPlayer = new Player
        {
            Name = PlayersName,
            Points = newPoints,
            Timer = newScore
        };
        players.Add(newPlayer);
        var TopTenLevel1 = players.OrderByDescending(x => x.Timer).Take(10);
        return players;
    }  


public partial class HighScoresMenu : Form
{
    private void HighScoresMenu_Load(object sender, EventArgs e)
    {
        Debug.Print(county.ToString());

        foreach (Player players in MainMenu.GetPlayers(TempnewScore, 
        TempnewPoints, TempPlayersName))
        {
            string TemyPlayersName = "Player's Name";
            float point = 0;
            float time = 0.0f;
            List<string> Allplayers = new List<string>();
            for(int count = 1; count < 6;count++)
            {
             Allplayers.Add(string.Format("{0,-2:0}: {1,-40} : {2,9:0} Points : {3,9:0.0} secs", count, TemyPlayersName, point, time));
            }
            Allplayers[0] = (string.Format("{0,-2:0}: {1,-40} : {2,9:0} Points : {3,9:0.0} secs", 1, players.Name, players.Points, players.Timer));
            ListBoxLevel1.DataSource = Allplayers;
        }
     }
}

1 个答案:

答案 0 :(得分:0)

好的,只是为了确保我正确地理解了您:您有一个代表高分的对象列表,并且想要对其进行更新。

我建议是:

  1. 为完成游戏的玩家创建新的高分对象。
  2. 使用List<>.Add()方法将其添加到列表中(而不是替换索引0上的对象)。
  3. 使用List<>.Sort()方法按点对列表进行排序。
  4. 如果列表的长度超过了所需的最大值(例如,如果您希望高分表只有10行),请删除列表中的最后一个元素。