try
for (int i = 0; i  < DataGridView1.Rows.Count; i++) 
 

解决方案 »

  1.   

    改变选择行并不会改变当前行
    不知以下代码是否满足LZ要求   
        private string LastTime = "";
        private void timer1_Tick(object sender, EventArgs e)
        {
          if (dataGridView1.SelectedRows.Count == 0) return;
          DateTime dt = DateTime.Now;                                                                                                                            //------如果 DataGridView1里面的数据与系统时间相等---------------                     3:00:00
          if ((dt.ToLongTimeString() == dataGridView1.SelectedRows[0].Cells[0].Value.ToString()) && (dt.ToLongTimeString() != LastTime))
          {
            button1_Click(null, null);
            int i = dataGridView1.Rows.IndexOf(dataGridView1.SelectedRows[0]);
            if (i < dataGridView1.RowCount - 1)
            {
              dataGridView1.Rows[i].Selected = false;
              dataGridView1.Rows[i + 1].Selected = true;
            }
            LastTime = dt.ToLongTimeString();
          }
        }
      

  2.   

    button1_Click(null,null);   我觉得你这样的写法有点不妥吧,这样的话符合条件就调用button1的click事件了,后面的当然不会执行了
    还是把你想做的事情写成方法吧,后面的不会受到影响
      

  3.   

    恩,不对啊,也只是表面上移动到下一行啊,
    在移动下一行时,上面的一行虽然说没有反白显示了,但是留下了一个边框,我无意中按下了键盘的向下键,发现那边框才是控制行的
    很郁闷,大哥们帮忙想想为什么下一行选中了的时候,原来的行(即上一行)怎么会有边框出现在啊,我还发现我把那个边框移动到哪,满足条件了Button1也会按下.
      

  4.   

    try//---------------DataGridView1的下一行选中-------------------- 
      for (int i = 0; i  < DataGridView1.Rows.Count - 1; i++) 
      { 
           int n = DataGridView1.SelectedRows[i].Index; 
           DataGridView1.Rows[n].Selected = false; 
           DataGridView1.CurrentCell.Selected = false;
           DataGridView1.Rows[n + 1].Selected = true; 
      }