如何实现抽奖时身份证号码不断滚动呢?

hmucheng 2006-07-24 03:07:08
从数据库中读取身份证信息,然后用一个label 实现不断滚动。按停止的时候选择当前的身份证号码,用c#应该如何实现呢?谢谢!@
...全文
2070 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnstar9988 2006-07-26
  • 打赏
  • 举报
回复
同意Mark2Win的说话, 程序必须公平!

必须每次随机选择N个!
hmucheng 2006-07-24
  • 打赏
  • 举报
回复
晕了,真是太笨,总算明白什么意思了。谢谢马克及各位的指点
Mark2Win 2006-07-24
  • 打赏
  • 举报
回复
timer下面的tick事件 中如果写 for(int i=0;i<=5000:i++){lable1.text=i.tostring()}
然后在按钮中触发tick。lable中只显示5000。也不滚动啊。
______________________

当然不会滚, 原因是太快了, 每一次tick事件被触发的时候都让label从1到5000显示共5000次,由于太快只能看到5000了, 应该是在tick事件之外定义一个全局变量i, 然后在tick事件里这么写:

if(i>5000){timer1.enable=false;}
else
{
label1.text=i.tostring();
i+ = 1;
}

看来楼主还是没有理解timer的概念
hmucheng 2006-07-24
  • 打赏
  • 举报
回复
timer下面的tick事件 中如果写 for(int i=0;i<=5000:i++){lable1.text=i.tostring()}
然后在按钮中触发tick。lable中只显示5000。也不滚动啊。
ashiw 2006-07-24
  • 打赏
  • 举报
回复
内定号码。瞎滚忽悠一下就可以了。要不然做一个不停滚的效果,然后随机抽到某号码。停,显示抽到的号码。
Mark2Win 2006-07-24
  • 打赏
  • 举报
回复
对了鉴于公平起见, 楼主最好随机选号, 也就是每次从datatable里选的时候用随机函数生成的行去去数据

this.lable1.text=DataTable.rows[frand(DataTable.Rows.Count())]["身份证号"].tostring();//frand(DataTable.Rows.Count())的意思是返回一个从0到datatable行数之间的随机整数, 你自己去写吧
Mark2Win 2006-07-24
  • 打赏
  • 举报
回复
把选号的代码放到timer的Tick事件下面, 然后设置timer的刷新时间, 比如500, 那么每隔0.5s系统就会执行一次timer下面的tick事件一次, 也就是执行选号一次.

至于你怎么写选号, 当然不能每一次都要到数据库里面去选, 这样慢死你; 应该先把身份证这列的数据从数据库取出来放到一个datatable里, 选号的时候从这个datatable里面选.

______________

如果是开发组件, 那么楼主也要考虑一下楼上有位说的作弊的情况, 就是一开始就选好号, 然后每次滚动都是走过场, 这样也很好做, 也可以把数据全放到datatable中, 停止的时候显示设定好的号即可.
Yellow198267 2006-07-24
  • 打赏
  • 举报
回复
至于循环的具体控制不知道是不是合适,没仔细考虑呢。忙~~~~~~~~~~~~
Yellow198267 2006-07-24
  • 打赏
  • 举报
回复
还是一次读出再循环显示,不要循环读数据库,那样会很慢吧。
for(int i=0;i<=ds.tables[0].rows.count-1;i++)
{
if(i=ds.tables[0].rows.count)i=0;
this.lable1.text=ds.tables[0].rows[i]["num"].tostring();
}
最好用一个thread来控制开始和结束。
yingfeiqiyue 2006-07-24
  • 打赏
  • 举报
回复
说得差不多了
ofei 2006-07-24
  • 打赏
  • 举报
回复
timer不是每隔一定时间就触发一次吗?

触发时会产生事件嘛
把数据显示功能放到timer的事件处理方法中就可以了

晕了!
CmUpDate 2006-07-24
  • 打赏
  • 举报
回复
timer不是每隔一定时间就触发一次吗?
在 timer 中放一个变量,每次加1,作为lable逐条显示的索引
hmucheng 2006-07-24
  • 打赏
  • 举报
回复
从数据库中读取数据我是用sqldatareader,然后用while(sdr.read()) 逐条读出,但是怎么和timer相结合呢?timer不是每隔一定时间就触发一次吗?但如何将读出来的数据用lable逐条显示呢?
Teng_s2000 2006-07-24
  • 打赏
  • 举报
回复
Up...
jacobwc 2006-07-24
  • 打赏
  • 举报
回复
汗一个楼上的
CmUpDate 2006-07-24
  • 打赏
  • 举报
回复
以前做过一个,是手机号码的

就是随机数字在那里滚动,除了前面的 1##########
其实中奖号码早就选择好了,
就是
第一位 滚着滚着停了
第二位 滚着滚着停了
。。。
第十一位 滚着滚着停了

就那么停了,其实号码是别人填写的,更本就没有数据库
jacobwc 2006-07-24
  • 打赏
  • 举报
回复
将读取的身份证号放在DataSet,当然不是timer了
然后将Label绑定到dataset
timer看下MSDN就OK了
下面的示例实现简单的间隔计时器,该计时器每五秒钟发一次警报。当发生警报时,MessageBox 显示该警报已激活的次数合计并询问用户计时器是否应继续运行。

public class Class1 {
static System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();
static int alarmCounter = 1;
static bool exitFlag = false;

// This is the method to run when the timer is raised.
private static void TimerEventProcessor(Object myObject,
EventArgs myEventArgs) {
myTimer.Stop();

// Displays a message box asking whether to continue running the timer.
if(MessageBox.Show("Continue running?", "Count is: " + alarmCounter,
MessageBoxButtons.YesNo) == DialogResult.Yes) {
// Restarts the timer and increments the counter.
alarmCounter +=1;
myTimer.Enabled = true;
}
else {
// Stops the timer.
exitFlag = true;
}
}

public static int Main() {
/* Adds the event and the event handler for the method that will
process the timer event to the timer. */
myTimer.Tick += new EventHandler(TimerEventProcessor);

// Sets the timer interval to 5 seconds.
myTimer.Interval = 5000;
myTimer.Start();

// Runs the timer, and raises the event.
while(exitFlag == false) {
// Processes all the events in the queue.
Application.DoEvents();
}
return 0;
}
}
jiezhi 2006-07-24
  • 打赏
  • 举报
回复
到msdn中看看timer的用法吧.数据怎么能放到timer里面呢?当然是显示在lable里了.
hmucheng 2006-07-24
  • 打赏
  • 举报
回复
qq:16077760 望指教
cangwu_lee 2006-07-24
  • 打赏
  • 举报
回复
怎么帮呢?!
加载更多回复(3)
仅限学习研究之用,切勿用作商业用途,请在下载后24小之内删除,本人不承担任何责任。 鸿运年会抽奖软件是功能强大的年会抽奖软件,界面大气漂亮,可设置不同的抽奖形式,自定义抽奖人数和奖项数,滚动显示抽奖人的照片和名字,极简单的设置方式。在年会和各种晚会用最合适了。 鸿运年会抽奖软件历经上千家公司和个人实践检验,好评百分百!还可以根据您的需求定制开发(按复杂度酌情加收费用)。 鸿运年会抽奖软件功能特点简介: *公正、公平、不重复中奖 *界面美观大方,鲜明的中国传统色彩(可选喜庆类、人文类、科技类等诸多界面) *运行稳定 功能强大 简洁易用 美观流畅 *支持显示序号;号码滚动显示 *支持自定义背景音乐;可自定义各奖项获奖人数;可自定义重复抽奖规则; *支持双显示器(例如笔记本电脑连接投影仪) *支持外部数据加入(加入大量附加数据稳定版) *支持一次抽出全部中奖者或者分多次抽出中奖者 *支持显示抽奖活动所有抽出的中奖者 *支持中奖名单保存.支持一键抽奖; *支持“抽奖参数”保存,下次打开“直接使用” *支持:“文字字符窜抽奖” *支持非号码数字抽奖,即支持姓名等中文字符抽奖 *可根据客户的需要定制开发,软件界面及其他均可定制开发 鸿运年会抽奖软件适用于各单位年终抽奖、晚会抽奖、姓名抽奖、编号抽奖、手机号码抽奖身份证号码抽奖、企事业单位抽奖、电视台抽奖、屏幕抽奖、LED抽奖
幸运福抽奖软件操作简单(两个步骤设置),功能齐全,稳定可靠,经历多次正式抽奖场合考验。 支持姓名抽奖、手机号码、证件号码、员工号以及各种组合抽奖模式,广泛应用于单位晚会、婚庆、商场、超市以及网吧等各种商业抽奖场合。 幸运福抽奖软件特点 软件内置多种外观主题,支持更换背景图片。 软件拥有强大的抽奖名单数据管理功能,支持将名单分组,支持抽奖数据导入(导出)EXCEL、文本文件。 允许设置多个抽奖奖项,各个抽奖奖项可分别设置其中奖名额、每次抽取名额、奖品图片、抽奖名单等。 支持姓名,手机,身份证,数字号码,已经它们的任意组合,支持隐私保护(如隐藏部分手机号和身份证号码内容)。 可自定抽奖滚动文字显示,抽奖文字和图片自动调整最佳显示位置和大小。 软件可以随显示中奖名单,可任意设置滚动字幕的字体和背景颜色等。 内置音响音效播放功能,可以根据需求随开关。 软件支持在抽奖过程中,作废中奖名额和补抽空缺名额。并可打印或导出中奖名单。 软件拥有完善的安全保护功能,支持分组和根据分组进行奖项分布。 支持使用快捷键进行抽奖活动。 支持奖品图片的同步显示。 软件记录所有抽奖历史。 软件具有中断保护功能,即使抽奖过程意外中断(例如断电),恢复后可以继续抽奖。 幸运福抽奖软件截图
吉星抽奖软件采用新一代混合编程技术,运行速度更快、界面绚丽美观、使用更加简单方便,是当前最先进易用的活动娱乐用电脑抽奖软件,是您举办抽奖活动的最佳助手。 软件支持:图片抽奖、姓名抽奖、手机号码抽奖身份证号码抽奖、编号抽奖... 吉星抽奖软件特点 易用:导航式菜单设计,简单三步骤开始抽奖,快速上手使用 美观:界面设计功能强大,高度自定义,打造千变万化的抽奖界面,满足各类场合应用。 通用:独特分辨率自定义设置,通用于各类显示器投影仪。 高效:高效率随机算法,抽奖速度快,效率高,抽奖公平公证,轻松应对千人级抽奖。 智能:智能设定行为分析,去除繁琐的软件设置,把复杂的事情都交给程序。 吉星抽奖软件功能 1.支持 "文字/数字抽奖" 、"图片抽奖" 、 "图片 文字" 三种抽奖模式,根据不同应用随意切换 2.支持文字隐私保护抽奖 (如:身份证、手机号码固定字段信息屏蔽功能) 3.抽奖界面可自由设定,操作类似Office非常方便,功能远超过同类产品,并且享受模板支持,无须自己寻找素材 (自定义背景、图片、文字、跑马灯等效果) 4.抽奖音乐可自由设置 (三种抽奖音乐模式:背景音乐、抽奖进行音乐、中奖音乐) 5.支持数据导入导出 (用户可以将抽奖名单、照片等信息通过外部的Excel、txt文件以及图片文件名等等进行批量导入,也可以将中奖名单进行导出,无须单一手动输入,非常方便快捷) 6.支持图片批量导入,摄像头取像,以及图片智能压缩 7.抽奖数据自动保存,可以中途暂停退出,再继续抽奖 8.采用高度随机算法,抽奖公平、公证、不重复 9.抽奖过程中支持弃奖 补奖的特殊操作,以不变应万变,保障活动圆满顺利 10.支持激光笔远程遥控抽奖 11.支持窗口模式适应各类尺寸LED大屏显示 12.支持特殊操作 吉星抽奖软件 v2016更新日志 1.增加视频教程连接标签,方便用户查找使用帮助资料 2.增加扫码自动找回注册码功能,新用户可以自助通过微信扫码开通注册 3.解决报错系统中文乱码问题 4.优化抽奖算法,解决了少部分系统上卡顿的问题,提高名单滚动流畅度 5.优化软件界面布局,可以适应任意DPI模式 6.优化部分操作系统上启动软件会附带office启动问题 7.增加抽奖工具栏自动隐藏功能 8.名单列表分页功能,提高名单过多窗体加载速度 吉星抽奖软件截图

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧