话不多说,直接上代码:(这里用四框(四个中抽)做范本)
using System; // 这些是要用到的库
using System.Drawing;
using System.Windows.Forms;
namespace 抽
{
public partial class Form1 : Form
{
public enum RunState // 枚举一些类:开始和停止
{
running,
stop
}
RunState state = RunState.stop; // 引用类,初始化为停止
public Form1()
{
InitializeComponent();
}
private void Runcolor(object sender, EventArgs e) // 颜色变动的函数(轮盘抽签)
{
timer4.Enabled = false; // timer4为这个函数的执行计时器,这里设关闭
if (state == RunState.running) // 实现颜色变动的条件(开始条件)
{
xian1.BackColor = Color.Yellow; // 设第一个框为黄色
timer1.Enabled = true; // 执行第一个变框
timer4.Enabled = true; // 开启函数计时器
}
}
private void button1_Click(object sender, EventArgs e) // 开始按钮
{
button1.Enabled = false;
button2.Enabled = true;
timer4.Tick += new EventHandler(Runcolor); // 委托执行Runcolor函数(每一时间间隔执行一次)
timer4.Enabled = true; // 开启计时器
this.state = RunState.running; // 条件变为开始
}
private void timer1_Tick(object sender, EventArgs e) // 变第二个框
{
if (xian1.BackColor == Color.Yellow)
{
xian1.BackColor = Color.White;
xian2.BackColor = Color.Yellow;
}
timer1.Enabled = false;
timer2.Enabled = true;
}
private void timer2_Tick(object sender, EventArgs e) // 变第三个框
{
if (xian2.BackColor == Color.Yellow)
{
xian2.BackColor = Color.White;
xian3.BackColor = Color.Yellow;
}
timer2.Enabled = false;
timer3.Enabled = true;
}
private void timer3_Tick(object sender, EventArgs e) // 变第四个框
{
if (xian3.BackColor == Color.Yellow)
{
xian3.BackColor = Color.White;
xian4.BackColor = Color.Yellow;
}
timer3.Enabled = false;
timer5.Enabled = true;
}
private void timer5_Tick(object sender, EventArgs e) // 使颜色恢复(上面的循环会重新开始第一个框为黄色)
{
if (xian4.BackColor == Color.Yellow)
{
xian4.BackColor = Color.White;
}
timer5.Enabled = false;
}
private void button2_Click(object sender, EventArgs e) // 停止按钮
{
button1.Enabled = true;
state = RunState.stop; // 设停止条件(与上面开始条件对应)
this.timer4.Enabled = false; // 关闭计时器
if (timer1.Enabled == true) // 以下是直接停止中间的步骤(选中对应的框)
{
timer1.Enabled = false;
}
if (timer2.Enabled == true)
{
timer2.Enabled = false;
}
if (timer3.Enabled == true)
{
timer3.Enabled = false;
}
if (timer5.Enabled == true)
{
timer5.Enabled = false;
}
}
}
}
1、程序的步骤
通过按动开始键,实现颜色在不同框内循环跳动,在通过点击停止键,实现颜色停止。
代码的解析都已标出,要注意的是计时器的时间间隔,timer1、timer2、timer3、timer5都是100(毫秒),而函数循环计时器的时间间隔为400(毫秒),因为一个循环要等四个框都变完了才执行,所以后续要做八抽一等等就要去对应改函数循环计时器时间间隔。
最后就是结果了:
如果有什么错误或更好的建议可在评论区留言,这是我第一次的学习结果,不喜勿喷!