当前位置:编程学习 > C#/ASP.NET >>

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

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

各位高手,大家好:

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

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

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

高手指点啊!
--------------------编程问答-------------------- list<img> lst=new list(img)
先用一个list<img>集合 存放所有图片
img指图片

然后数据库就可以关了

timer空间里面写:

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

this.pictruebox.image=image.fromfile(i);
} --------------------编程问答-------------------- 先把数据读出。再显示了。 --------------------编程问答-------------------- 几千个链接一起读出来就行了。
然后象一楼那样在Timer里写个循环。
--------------------编程问答-------------------- 先用一个List把图片取出来
然后再Timer里面写事件

for(int i=0;i <List.count;i++) 
{ 
       pictruebox.image=XXXXX; 
} --------------------编程问答-------------------- 大家 都说了  呵呵 


 
话说  每天回帖的10分的说  那我就 混了  呵呵 --------------------编程问答-------------------- 你将定时器设置10秒钟刷一次屏,
没刷一次屏,你改变一些图片的路径就ok了 --------------------编程问答-------------------- 恩,我还从没用过图片控件的,呵呵,受教了 --------------------编程问答-------------------- --------------------编程问答-------------------- 一次性读取所有连接
保存在集合中
timer控件每10秒触发一次事件
将集合中的连接Next(); --------------------编程问答-------------------- 把图片放在ImageList, 在计时器里写下如下代码:
        private void timer1_Tick(object sender, EventArgs e)
       {
               this.myPictureBox.Image=myImageList.Images[i];
               time.Text = Convert.ToString(i);
               i++;            
        } --------------------编程问答-------------------- 或许还有得分的机会。
首先,拖一个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];
       } --------------------编程问答-------------------- 这样一次性读取那么多图片,会不会很占内存啊?
引用 1 楼 zhanghang19890621 的回复:
list <img> lst=new list(img)
先用一个list <img>集合 存放所有图片
img指图片

然后数据库就可以关了

timer空间里面写:

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

this.pictruebox.image=image.fromfile(i);
--------------------编程问答-------------------- 大家说的基本上都可以.... --------------------编程问答-------------------- 估计解决了  楼主结贴吧   我来接分咯  呵呵... --------------------编程问答-------------------- 基本思路就是在timer里加个循环 调用图片,最好把图片放到一个图片组里 方便调用 --------------------编程问答-------------------- 哈哈 大家都把方法说完了 来混点分…… --------------------编程问答--------------------
   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;
            } 
        }
    }
--------------------编程问答-------------------- 哎,把所有的图片存放地址放到一个数据里,每隔十秒赋给PictrueBox里就Ok了。。。

//把他放在Timer时间里,你10秒就要注意设置Interval为10000
 string [] arrAddress=new string [];
            //给它赋值后
           for (string strAddress in arrAddress)
           {     
            this.pictureBox1.Image = Image.FromFile(strAdderss);
           }
--------------------编程问答-------------------- 很好 很强大…… --------------------编程问答-------------------- 先从数据库中把图片链接(也就是路径)读取到List<string> 中 ,然后 用Timer 隔十秒刷新就可以了吧。 --------------------编程问答-------------------- 如果图片量很大的话,估计挺耗内存的。应该针对具体情况有所取舍
1、图片量较少,可以一次性读入内存中显示.
2。量大建议建立个零时文件夹,一次下载图片后直接读本地文件图片显示。
--------------------编程问答-------------------- 顶
--------------------编程问答-------------------- http://topic.csdn.net/u/20091115/14/80265c2f-4ab3-4d5d-8cd0-c8cba0887914.html --------------------编程问答-------------------- "把图片放在ImageList"总共几千张图片,会不会很慢? --------------------编程问答-------------------- 打酱油 --------------------编程问答-------------------- 呵呵!chentian5201931回复的够完整的了!我刚好也有用! --------------------编程问答-------------------- winform直接连数据库,很多用户的话,肯定数据库吃不消 --------------------编程问答-------------------- 实时定时器,需要注意定时器定时器启动了,设置enable=false,执行完后再true,要不然系统资源消耗很大,甚至累趴下。 --------------------编程问答-------------------- 使用定时器,需要注意定时器启动了,设置enable=false,执行完后再true,要不然系统资源消耗很大,甚至累趴下。 --------------------编程问答-------------------- lz有没有什么特别的需求,如果图片是随机的,或者没有什么顺序可言,大可以每次读个一百张图片,等到这一百张用完了,在去数据库读取...这种解决方案应该不是很耗内存的... --------------------编程问答--------------------    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;
            } 
        }
    } --------------------编程问答-------------------- 首先你要先定义一个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;
            }
        } --------------------编程问答-------------------- --------------------编程问答-------------------- 第一次读取100个,第二次读取另外100个,怎么解决每次读取的都不重复呢?
引用 30 楼  的回复:
lz有没有什么特别的需求,如果图片是随机的,或者没有什么顺序可言,大可以每次读个一百张图片,等到这一百张用完了,在去数据库读取...这种解决方案应该不是很耗内存的...
--------------------编程问答-------------------- 做成BS模式么,不就没有那么多站点了,服务器可以预加载图片,并定时与数据库同步
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,