16,554
社区成员
发帖
与我相关
我的任务
分享
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
GroupBox1.BackColor = Color.Aqua
Me.Refresh() '手动刷新
Thread.Sleep(1000) '--想引入进程休眠 来获得每个GROUPBOX 颜色逐一改变,但执行后还是同时改变
GroupBox2.BackColor = Color.Aqua
Me.Refresh() '手动刷新
Thread.sleep(1000)
GroupBox3.BackColor = Color.Aqua
Me.Refresh() '手动刷新
Thread.sleep(1000)
GroupBox4.BackColor = Color.Aqua
Me.Refresh() '手动刷新
Thread.Sleep(1000)
End Sub
或者换一个延时方法:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
GroupBox1.BackColor = Color.Aqua
Sleep(1000) '--想引入进程休眠 来获得每个GROUPBOX 颜色逐一改变,但执行后还是同时改变
GroupBox2.BackColor = Color.Aqua
Sleep(1000)
GroupBox3.BackColor = Color.Aqua
Sleep(1000)
GroupBox4.BackColor = Color.Aqua
Sleep(1000)
End Sub
Public Shared Sub Sleep(ByVal Interval)
Dim __time As DateTime = DateTime.Now
Dim __Span As Int64 = Interval * 10000 '因为时间是以100纳秒为单位。
While (DateTime.Now.Ticks - __time.Ticks < __Span)
Application.DoEvents()
End While
End SubPrivate Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
GroupBox1.BackColor = Color.Aqua
Sleep(1000) '--想引入进程休眠 来获得每个GROUPBOX 颜色逐一改变,但执行后还是同时改变
GroupBox2.BackColor = Color.Aqua
Sleep(1000)
GroupBox3.BackColor = Color.Aqua
Sleep(1000)
GroupBox4.BackColor = Color.Aqua
Sleep(1000)
End Sub
Public Shared Sub Sleep(ByVal Interval)
Dim __time As DateTime = DateTime.Now
Dim __Span As Int64 = Interval * 10000 '因为时间是以100纳秒为单位。
While (DateTime.Now.Ticks - __time.Ticks < __Span)
Application.DoEvents()
End While
End Sub
或者用楼上的Timer方法。
用委托也可以,不过感觉没啥必要。
private void button1_Click(object sender, EventArgs e)
{
List<GroupBox> lst = new List<GroupBox>();
foreach (Control item in this.Controls)
{
if (item.GetType()==(new GroupBox()).GetType())
{
lst.Add((GroupBox)item);
}
}
List<GroupBox> orderlst = lst.OrderBy(c => c.Name).ToList();
Timer t = new Timer();
t.Interval = 1000;
t.Tick += (ts, te) =>
{
if (orderlst.Count > 0)
{
GroupBox g = orderlst[0];
g.BackColor = Color.BurlyWood;
orderlst.RemoveAt(0);
}
else
{
t.Stop();
}
};
t.Start();
}
修改了一下排序和突出了一下颜色,你只要有多个groupbox在窗体中就可以实现自动延时变化了。
private void button1_Click(object sender, EventArgs e)
{
List<GroupBox> lst = new List<GroupBox>();
foreach (Control item in this.Controls)
{
if (item.GetType()==(new GroupBox()).GetType())
{
lst.Add((GroupBox)item);
}
}
Timer t = new Timer();
t.Interval = 1000;
t.Tick += (ts, te) =>
{
if (lst.Count > 0)
{
GroupBox g = lst[0];
g.BackColor = Color.AliceBlue;
lst.RemoveAt(0);
}
else
{
t.Stop();
}
};
t.Start();
}
试了一下效果不错。
我就不给你翻译成vb了自己想办法。