5

我在尝试在 Form(1) 中的一组照片之间切换时遇到问题。我正在使用 picturebox.Image 来查看选择的图片,并在一定的时间间隔(比如 4 秒)后,切换到同一组照片中的随机照片。

在每张照片之间切换时,我想显示另一个 Form(2) 1 秒,然后返回 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:\Users\Documents\Pictures");
        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.时间没有更新,我的意思是时间。间隔始终设置为 100 2.我不知道为什么,但是,照片从未显示在图片框中。图像虽然,在调试模式它表明照片被正确选择。

谢谢你的帮助!罗伊。

4

1 回答 1

1

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

于 2012-10-24T09:35:43.590 回答