C#用timer控件实现1~100随机数抽奖,已经抽中的不参与下一次循环,求代码 50
我的页面是用一个button来点击开始和停止,Timer控制出来的随机数用label在页面滚动显示,停止的时候出来一个数,再开始滚动的时候这个数就不包括在里面了。求代码,...
我的页面是用一个button来点击开始和停止,Timer控制出来的随机数用label在页面滚动显示,停止的时候出来一个数,再开始滚动的时候这个数就不包括在里面了。求代码,哪位大神能指点一下...
展开
1个回答
展开全部
我用多线程写的,你可以参考下。
系统界面图如下:(注:重置功能为清除已经中奖号码,回归1-100都可以中奖状态。)
代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
System.Threading.Thread g_Thread = null;
List<int> g_list = new List<int>();
int g_Num = 0;
delegate void g_delegate();
/// <summary>
/// 开始
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
if(g_list.Count==100)
{
MessageBox.Show("所有数字已使用,请重置!");
return;
}
button3.Enabled = true;
Random r = new Random();
g_delegate dele= ChangeTxt;
g_Thread = new System.Threading.Thread(() =>
{
while(this.IsDisposed==false)
{
g_Num = r.Next(1, 100);
if(g_list.Contains(g_Num))
{
g_Num = 1;
}
while(g_list.Contains(g_Num))
{
g_Num++;
}
this.Invoke(dele);
System.Threading.Thread.Sleep(50);
}
});
g_Thread.Start();
}
void ChangeTxt()
{
label2.Text = g_Num.ToString();
}
/// <summary>
/// 停止
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
//if(g_Thread.ThreadState==System.Threading.ThreadState.Running)
{
g_Thread.Abort();
g_list.Add(Convert.ToInt32(label2.Text));
}
button3.Enabled = false;
}
/// <summary>
/// 重置
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
g_list.Clear();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
System.Environment.Exit(0);
}
}
追问
请问Timer控件应该怎么写呀,我需要页面滚动显示随机数
追答
大致如下:
添加Timer控件;
设置间隔时间属性
timer1.Interval = 20;//设置间隔时间-毫秒
3.在button_Click事件添加:
timer1.Start();//开始按钮触发
4.需要执行的操作:
/// <summary>
/// 每当经过指定时间间隔发生
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer1_Tick(object sender, EventArgs e)
{
//要执行的操作
}
5.结束按钮:
timer1.Stop();//结束按钮触发
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询