我有一个窗体,里面有一些控件,比如说 textbox ,checkbox,用来显示我的xml文件里的信息。在我的xml文件里,有很多条我已经录好的信息,窗体上有个button,里面写的方法是表示读取上一条记录,还有个button是表示读取下一条记录,并把读取的信息显示在窗体的控件上,为什么运行时当我点击读取上一条就会出现  索引超出范围 ?
  还有就是,当我一直点击读取下一条记录时,当读到xml文件中最后一条信息后,再读取的话,也会 出现 索引超出范围 ?
  代码如下:
   int n = 0;
   List<CPlayer> m_listPlayers = new List<CPlayer>();
  //读取上一条信息
  private void btPrevious_Click(object sender, EventArgs e)
  {
  this.txtName.Text = m_listPlayers[n].StarName;
  this.cbSportName.SelectedItem = m_listPlayers[n].SportName;
  n--;
  }
  //读取下一条信息
  private void btNext_Click(object sender, EventArgs e)
  {
  this.txtName.Text = m_listPlayers[n].StarName;
  this.cbSportName.SelectedItem = m_listPlayers[n].SportName;
  n++;
  }

解决方案 »

  1.   

    当n变化时:
    如果n==0,“上一条”按钮设为不可以点击
    如果n==条数-1,“下一条”按钮设为不可以点击
      

  2.   


    private void btPrevious_Click(object sender, EventArgs e)
            {
                if (n > 0)
                {
                    n--;
                }
            }        private void btNext_Click(object sender, EventArgs e)
            {
                if (n < m_listPlayers.Count - 1)
                {
                    n++;
                }
            }
      

  3.   

    当n=0时,你还给它n--,索引当然会超出范围了啊,
    当你的n=最大值的时候,你还给它n++,索引也当然会超出范围,
    所以,在点击上一条和下一条时进行判断其n的值。
      

  4.   

    Cplayer 是我自己定义的一个类。
     CPlayer cPlayer = new CPlayer();
                cPlayer.SportName = cbSportName.SelectedItem.ToString();
                cPlayer.StarName = txtName.Text.Trim();