加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何使用时间间隔在Windows窗体中切换照片?

发布时间:2020-12-15 21:41:40 所属栏目:百科 来源:网络整理
导读:我在尝试在表单(1)中切换一组照片时遇到问题. 我正在使用picturebox. Image来查看所选图片,并在一定的时间间隔(比如4Sec)后,切换到同一组照片中的随机照片. 在每张照片之间切换时,我想显示1Sec的另一个Form(2),然后返回Form(1). 表格(1)中的守则: public pa
我在尝试在表单(1)中切换一组照片时遇到问题.
我正在使用picturebox. Image来查看所选图片,并在一定的时间间隔(比如4Sec)后,切换到同一组照片中的随机照片.

在每张照片之间切换时,我想显示1Sec的另一个Form(2),然后返回Form(1).

表格(1)中的守则:

public partial class Form1: Form
    {
        public static Timer time;
        public static Form mod;
    public Form1()
    {
        InitializeComponent();
        time = new Timer();
        mod = new Form2();

        mod.Owner = this;
        mod.Show();
        this.Hide();

        RunForm1();
    }

    public void RunForm1()
    {
        for (int i = 0; i < groupSize; i++)
        {
                mod.Owner = this;
                mod.Show();
                this.Hide();
        }
    }
}

表格(2)中的守则:

public partial class Form2: Form
{
        public static Timer time;
        public int index = -1;
        public List<Image> images;
        public DirectoryInfo dI;
        public FileInfo[] fileInfos;


    public Form2()
    {
        InitializeComponent();

        images = new List<Image>();
        time = new Timer();

        dI = new DirectoryInfo(@"C:UsersDocumentsPictures");
        fileInfos = dI.GetFiles("*.jpg",SearchOption.TopDirectoryOnly);
        foreach (FileInfo fi in fileInfos)
            images.Add(Image.FromFile(fi.FullName));

        index = images.Count;
        time.Start();

        RunForm2();
    }

    public void RunForm2()
    {
        Random rand = new Random();

        int randomCluster = rand.Next(0,1);

        while (index != 0)
        {
            pictureBox1.Image = images[Math.Abs(index * randomCluster)];
            setTimer();
            index--;
        }
    }

    public void setTimer()
    {
        if (time.Interval == 4000)
        {
            this.Owner.Show();
            this.Close();
        }
    }

}

我在这段代码中的主要问题是:
1.时间不更新,我的意思是,time.Interval总是设置为100
2.我不知道为什么,但是,照片,从未在picturebox.Image中显示.虽然,在调试模式下,它显示照片被正确选择.

谢谢你的帮助!
罗伊.

解决方法

您需要使用计时器中的Tick事件来知道时间已过去. 检查间隔是否等于(==)4000,但需要将其设置为4000(time.Interval = 4000),然后启动计时器.然后Tick事件将在4秒后触发. 并且可以通过调用pictureBox1.UpdateLayout()来解决图像未显示的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读