c#在列表视图中显示数据

时间:2010-04-24 12:58:35

标签: c#

private void displayResultsButton_Click(object sender, EventArgs e)
    {
        gameResultsListView.Items.Clear();

        //foreach (Game game in footballLeagueDatabase.games)
        //{
            ListViewItem row = new ListViewItem();
            row.SubItems.Add(game.HomeTeam.ToString());
            row.SubItems.Add(game.HomeScore.ToString());
            row.SubItems.Add(game.AwayTeam.ToString());
            row.SubItems.Add(game.AwayScore.ToString());
            gameResultsListView.Items.Add(row);
       // }
        //footballLeagueDatabase.games.Sort();
    }
   }
}

这是显示按钮,以下代码描述了添加按钮。

private void addGameButton_Click(object sender, EventArgs e)
    {
        if ((homeTeamTxt.Text.Length) == 0)
            MessageBox.Show("You must enter a Home Team");
        else if (homeScoreUpDown.Maximum <= 9 && homeScoreUpDown.Minimum >= 0)
            MessageBox.Show("You must enter one digit between 0 and 9");
        else if ((awayTeamTxt.Text.Length) == 0)
            MessageBox.Show("You must enter a Away Team");
        else if (awayScoreUpDown.Maximum <= 9 && awayScoreUpDown.Minimum >= 0)
            MessageBox.Show("You must enter one digit between 0 to 9");
        else 
        {
            //checkGameInputFields();
            game = new Game(homeTeamTxt.Text, int.Parse(homeScoreUpDown.Value.ToString()), awayTeamTxt.Text, int.Parse(awayScoreUpDown.Value.ToString()));
            MessageBox.Show("Home Team" + 't' + homeTeamTxt.Text + "Away Team" + awayTeamTxt.Text + "created");
            footballLeagueDatabase.AddGame(game);

            //clearCreateStudentInputFields();
        }
    }

我需要将数据插入上面的文本字段和数字向上控制并在列表视图中显示它们。 但我不知道怎么做,因为当我按下“显示结果”按钮时,它会显示错误信息。

如果您知道如何在列表视图中显示数据,请告知我们。这是我第一次使用列表视图。

1 个答案:

答案 0 :(得分:2)

根据您指定的错误消息,我相信您的问题是您用于创建子项的游戏对象未实例化。我注意到你注释掉了创建这个对象的foreach。因此,请确保创建名为game的对象。

除此之外,您没有指定数据的显示方式。如果您希望所有子项都出现在一行中,那么您还需要添加列 - 除非您已使用设计器完成此操作。否则你的代码必须是这样的:

private void displayResultsButton_Click(object sender, EventArgs e) {
    Game game = new Game("Home", 10, "Away", 12);

    gameResultsListView.Items.Clear();
    //You need this so that the subitems are also displayed, otherwise
    //only the main item will show in the listview
    gameResultsListView.View = View.Details;

    ListViewItem row = new ListViewItem("Game 1");
    row.SubItems.Add(game.HomeTeam.ToString());
    row.SubItems.Add(game.HomeScore.ToString());
    row.SubItems.Add(game.AwayTeam.ToString());
    row.SubItems.Add(game.AwayScore.ToString());

    //The main item and each subitem get a column in the listView
    gameResultsListView.Columns.Add("Game", -2, HorizontalAlignment.Left);
    gameResultsListView.Columns.Add("HomeTeam", -2, HorizontalAlignment.Left);
    gameResultsListView.Columns.Add("HomeTeamScore", -2, HorizontalAlignment.Left);
    gameResultsListView.Columns.Add("AwayTeam", -2, HorizontalAlignment.Left);
    gameResultsListView.Columns.Add("AwayTeamScore", -2, HorizontalAlignment.Left);

    gameResultsListView.Items.Add(row);
}

注意我是如何在顶部创建一个Game对象的。如果上面的代码有效,那么问题在于游戏对象没有在原始代码中实例化。如果它有效,你至少知道问题不在这个功能范围内。另外,您是否在IDE中测试应用程序,因为如果您是这样,您应该收到的消息多于您展示的消息,这会导致您遇到问题。