尝试在表单(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:\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.时间不更新,我的意思是,time.Interval总是设置为100 2.我不知道为什么,但是,照片,从未在picturebox.Image中显示,但是,在调试模式下,它显示照片被正确选择。
谢谢你的帮助! 罗伊。
答案 0 :(得分:1)
您需要使用计时器中的Tick事件来了解时间已过。
检查间隔是否等于(==)4000,但是您需要将其设置为4000(time.Interval = 4000
),然后启动计时器。然后Tick事件将在4秒后触发。
并且可以通过调用pictureBox1.UpdateLayout()
;