求助大侠, 代码如下,想实现的功能就是如果系统时间等于textbox里的时间,那么textbox的背景颜色变绿色。但是如下代码没有提示ERROR,但在编译时出现提示错误: T=g[m] 的问题”Index was outside the bounds of the array“。 哪位大侠帮忙找找错误。 先谢谢了。    
 private void timer2_Tick(object sender, EventArgs e)
        {
            RunTimer();
         
        }
        private void RunTimer()
        {
                      DateTime t = DateTime.Now;
            TextBox[] txtbox = { txtbox1, txtbox2, txtbox3, txtbox4, txtbox5, txtbox6, txtbox7, txtbox8, txtbox9, txtbox10, txtbox11 };//定义textbox数组显示数组 g 里面的元素
            DateTime TestFinish = DateTime.Now.AddMinutes(22);
            if (DateTime.Compare(t, TestFinish) < 0)//如果系统时间小于项目完成时间,就要对比textbox里的时间和系统时间是否相等
            {
                              string InputDateTxt = txtInput.Text;
                DateTime now = DateTime.Now;
                DateTime Input = Convert.ToDateTime(InputDateTxt);//定义了用户输入的开始工作时间
                int[] AddMins = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
                DateTime[] g = { Input.AddMinutes(AddMins[0]), Input.AddMinutes(AddMins[1]), Input.AddMinutes(AddMins[2]), Input.AddMinutes(AddMins[3]), Input.AddMinutes(AddMins[4]), Input.AddMinutes(AddMins[5]), Input.AddMinutes(AddMins[6]), Input.AddMinutes(AddMins[7]), Input.AddMinutes(AddMins[8]), Input.AddMinutes(AddMins[9]), Input.AddMinutes(AddMins[10]) };//这里定义了textbox里显示的时间
                foreach (TextBox i in txtbox)//依次比较textbox和当前系统时间是否相同,随着系统时间的变话,如果哪个相同了,那个textbox的背景颜色就变化
                {
                    
                    for (int m=0;m<=g.Length;m++)
                    {
                        DateTime T = new DateTime();
                        T = g[m];
                        if (DateTime.Equals(T,now))
                            {
                                i.BackColor = Color.Green;
                            }                    }
                       
                      
                }            }
        }

解决方案 »

  1.   

    for (int m=0;m<=g.Length;m++)
    改成
    for (int m=0;m<g.Length;m++)不然的话当m取到g.Length时会出错的。
      

  2.   

    改成了 for (int m=0;m<g.Length;m++), 整个编译没有问题,但是textbox的颜色没有变化,这是什么原因呢? 请指教。
      

  3.   

    看你的意思是只比较到分钟,那应该把比较的条件
    DateTime.Equals(T,now)
    改成
    T.Date==now.Date && T.Hour==now.Hour && T.Minute==now.Minute
    就可以了。
    两个DateTime比较的话是精确到毫秒以下的,一般来说很少有两个DateTime相等。
      

  4.   

    循环上好像也有问题,现在是变了颜色,但是一下全变了,是不是我设置的起始判断条件有问题?我的目的是一个个的textbox和系统时间比较,然后当系统时间等于textbox里的时间的时候再变色。 
      

  5.   

    已经搞定了, 谢谢 ParanoidKing 的帮助。