求助大侠, 代码如下,想实现的功能就是如果系统时间等于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;
} }
} }
}
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;
} }
} }
}
改成
for (int m=0;m<g.Length;m++)不然的话当m取到g.Length时会出错的。
DateTime.Equals(T,now)
改成
T.Date==now.Date && T.Hour==now.Hour && T.Minute==now.Minute
就可以了。
两个DateTime比较的话是精确到毫秒以下的,一般来说很少有两个DateTime相等。