C# 想用Timer控件,将数据库中的图片每隔10秒,显示一张出来,请大家帮助

sunhuima 2010-01-03 05:43:08
C# 想用Timer控件,将数据库中的图片每隔10秒,显示一张出来,请大家帮助

各位高手,大家好:

我在FORM窗体中,放置了Picturebox控件和Timer控件,想通过Timer,每隔10秒将数据库中的图片显示一张出来在picturebox控件中。

注:数据库中的图片字段是图片的链接地址,另外,数据库中的图片有很几千张。

问题:如何用Timer实现?
另外,如果一直等着显示,数据库连接一直连着,如果用户数大了,那么多连接不关闭,是不是占用资源很大啊?如何解决呢?

高手指点啊!
...全文
1483 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
mwp 2012-11-01
  • 打赏
  • 举报
回复
做成BS模式么,不就没有那么多站点了,服务器可以预加载图片,并定时与数据库同步
hjf520p 2012-11-01
  • 打赏
  • 举报
回复
第一次读取100个,第二次读取另外100个,怎么解决每次读取的都不重复呢?
[Quote=引用 30 楼 的回复:]
lz有没有什么特别的需求,如果图片是随机的,或者没有什么顺序可言,大可以每次读个一百张图片,等到这一百张用完了,在去数据库读取...这种解决方案应该不是很耗内存的...
[/Quote]
山海互联 2010-12-21
  • 打赏
  • 举报
回复
首先你要先定义一个private int index
然后在form4里添加timer1,picturebox1,再添加一个imageList1
code如下
private int index;
private void Form4_Load(object sender, EventArgs e)
{
textBox1.Text = DateTime.Now.ToString("h:mm:ss");
timer1.Enabled = true;
timer1.Interval = 2000;
}

private void timer1_Tick(object sender, EventArgs e)
{
{
timer1.Enabled = false;
if (index < imageList1.Images.Count - 1)
{
index++;
}
else
{
index = 0;
}
pictureBox1.Image = imageList1.Images[index];
timer1.Enabled = true;
}
}
小妖刀 2010-01-03
  • 打赏
  • 举报
回复
或许还有得分的机会。
首先,拖一个timer到窗体上,设置每隔10秒换图片。也就是设置Interval为10000,设置Enable为true。
个人认为用imagelist比较好,就用不上数据库了,直接把图片放到imagelist的images属性里。在写上计时器的代码就好了。
下面是计时器的代码:
private void timer1_Tick(object sender, EventArgs e)
{
if (index < imageList1.Images.Count - 1)
{
index++;
}
else
{
index = 0;
}
pictureBox1.Image = imageList1.Images[index];
}
guolighting 2010-01-03
  • 打赏
  • 举报
回复
把图片放在ImageList, 在计时器里写下如下代码:
private void timer1_Tick(object sender, EventArgs e)
{
this.myPictureBox.Image=myImageList.Images[i];
time.Text = Convert.ToString(i);
i++;
}
vip__888 2010-01-03
  • 打赏
  • 举报
回复
一次性读取所有连接
保存在集合中
timer控件每10秒触发一次事件
将集合中的连接Next();
tianxiawuzei 2010-01-03
  • 打赏
  • 举报
回复
恩,我还从没用过图片控件的,呵呵,受教了
lhz_dxm 2010-01-03
  • 打赏
  • 举报
回复
你将定时器设置10秒钟刷一次屏,
没刷一次屏,你改变一些图片的路径就ok了
hahayanjing 2010-01-03
  • 打赏
  • 举报
回复
大家 都说了 呵呵



话说 每天回帖的10分的说 那我就 混了 呵呵
ZMAK_Chun 2010-01-03
  • 打赏
  • 举报
回复
先用一个List把图片取出来
然后再Timer里面写事件

for(int i=0;i <List.count;i++)

pictruebox.image=XXXXX;
sxmonsy 2010-01-03
  • 打赏
  • 举报
回复
几千个链接一起读出来就行了。
然后象一楼那样在Timer里写个循环。
xingxing_123 2010-01-03
  • 打赏
  • 举报
回复
public partial class Form1 : Form
{
private bool isTrue = true;
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
timer1.Interval = 200;
}

private void timer1_Tick(object sender, EventArgs e)
{
if (label1.Right >= this.Width)
{
isTrue = false;
}
if (label1.Left <= 0)
{
isTrue = true;
}
if (isTrue)
{
label1.Left += 10;
}
else
{
label1.Left -= 10;
}
}
}
GS1T74wjwpg 2010-01-03
  • 打赏
  • 举报
回复
lz有没有什么特别的需求,如果图片是随机的,或者没有什么顺序可言,大可以每次读个一百张图片,等到这一百张用完了,在去数据库读取...这种解决方案应该不是很耗内存的...
exiori 2010-01-03
  • 打赏
  • 举报
回复
先把数据读出。再显示了。
zhanghang19890621 2010-01-03
  • 打赏
  • 举报
回复
list<img> lst=new list(img)
先用一个list<img>集合 存放所有图片
img指图片

然后数据库就可以关了

timer空间里面写:

for(int i=0;i<lst.count;i++)

this.pictruebox.image=image.fromfile(i);
yeyanhui0331 2010-01-03
  • 打赏
  • 举报
回复
使用定时器,需要注意定时器启动了,设置enable=false,执行完后再true,要不然系统资源消耗很大,甚至累趴下。
yeyanhui0331 2010-01-03
  • 打赏
  • 举报
回复
实时定时器,需要注意定时器定时器启动了,设置enable=false,执行完后再true,要不然系统资源消耗很大,甚至累趴下。
yeyanhui0331 2010-01-03
  • 打赏
  • 举报
回复
winform直接连数据库,很多用户的话,肯定数据库吃不消
explease01 2010-01-03
  • 打赏
  • 举报
回复
呵呵!chentian5201931回复的够完整的了!我刚好也有用!
八树 2010-01-03
  • 打赏
  • 举报
回复
打酱油
加载更多回复(13)

111,120

社区成员

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

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

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