闲着蛋疼,写个抽奖器玩玩。
界面:2个按钮(一个开始,一个停止),一个label显示当前抽中人的姓名或者编号,一个定时器。
原理:在窗体加载的时候,首先加载好在配置文件设置的文件夹内的所有图片保存在一个List中,并且设置好timer的时间,最好是短一点,10-20毫秒之内。在timer的Tick事件中,随机指定一个路径。
详细代码:界面的布局就 省了。
配置文件
<configuration> <appSettings > <add key="picPath" value="F:\Sample\winform\clock"/> </appSettings> </configuration>
Load事件
timer1.Enabled = false;//默认不启用定时器
timer1.Interval = 15;//定时器触发间隔时间,毫秒为单位
string path = ConfigurationManager.AppSettings["picPath"].ToString();//获取配置文件的图片路径,可以考虑用OpenFileDialg....
string[] fs = Directory.GetFiles(path);//获取该路径下的所有文件名
//遍历所有文件,匹配是图片的文件
for (int i = 0; i < fs.Length; i++)
{
if (Path.GetExtension(fs[i]).ToLower() == ".jpg")//该处为默认扩展名,根据具体情况而定
{
photo.Add(fs[i]);//如果是图片文件,则将该文件路径添加到全局的ArrayList中
}
}
开始按钮和停止按钮事件
//开始按钮事件
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;//启用定时器
}
//停止按钮事件
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = false;//停用定时器
}
最后一个是重点的定时器Tick事件
private void timer1_Tick(object sender, EventArgs e)
{
//产生一个随机数,随机数的范围为0-文件总数
Random rand = new Random();
int i= rand.Next(photo.Count);
pictureBox1.ImageLocation = photo[i].ToString();//指定PicBox的文件路径为随机的路径
//以下代码为截取文件名,不包括后缀,实际应用中,可能是姓名等其他唯一的命名。
string filename = Path.GetFileName(photo[i].ToString());//
int index = filename.LastIndexOf('.');
label1.Text = filename.Substring(0, index);
}
最后来个界面截图瞧瞧

本文从百度空间搬家到博客园。。