左图是我的代码 
中图是我的表 
右图是我一开始运行我的表时候 点击“last”就出错了,但是如果我先按一下“next”再按一下“last”是没有问题的。这是为什么呢? 
帮一下忙,我改怎么修改我的代码呢 如下是左图代码 
i--; 
if ((i < db.Rows.Count)==false ) 
{ i++; MessageBox.Show("最后一条"); } 账号栏.Text = db.Rows[i][0].ToString(); 
密码栏.Text = db.Rows[i][1].ToString();

解决方案 »

  1.   


            private int _rowIndex;
            public int RowIndex
            {
                get
                {
                    return this._rowIndex;
                }
                set
                {
                    if (value < 0)
                        this._rowIndex = 0;
                    else if (value >= db.Rows.Count)
                        this._rowIndex = db.Rows.Count - 1;
                    else
                        this._rowIndex = value;
                }
            }        private void next_Click(object sender, EventArgs e)
            {
                this.RowIndex++;
            }        private void last_Click(object sender, EventArgs e)
            {
                this.RowIndex--;
                if (this.RowIndex == db.Rows.Count)
                {
                    MessageBox.Show("最后一条");
                }
                帐号栏.Text = db.Rows[this.RowIndex][0].ToString();
                密码栏.Text = db.Rows[this.RowIndex][1].ToString();
            }
    做类似判断都可以。
      

  2.   


            private int _rowIndex;
            public int RowIndex
            {
                get
                {
                    return this._rowIndex;
                }
                set
                {
                    if (value < 0)
                        this._rowIndex = 0;
                    else if (value >= db.Rows.Count)
                        this._rowIndex = db.Rows.Count - 1;
                    else
                        this._rowIndex = value;
                }
            }        //第一条
            private void firlt_Click(object sender, EventArgs e)
            {
                this.RowIndex = 0;
            }        //前一条
            private void pre_Click(object sender, EventArgs e)
            {
                this.RowIndex--;
            }        //下一条
            private void next_Click(object sender, EventArgs e)
            {
                this.RowIndex++;
            }        //最后一条
            private void last_Click(object sender, EventArgs e)
            {
                this.RowIndex = db.Rows.Count - 1;            帐号栏.Text = db.Rows[this.RowIndex][0].ToString();
                密码栏.Text = db.Rows[this.RowIndex][1].ToString();
            }
      

  3.   


     private void last_Click(object sender, EventArgs e)
            {
    if(i==0)
    return;
    i--;  
    if ((i < db.Rows.Count)==false )  
    { i++; MessageBox.Show("最后一条"); }  账号栏.Text = db.Rows[i][0].ToString();  
    密码栏.Text = db.Rows[i][1].ToString();
    }
      

  4.   

    i值变化了,导致db.Rows[i]越界了吧