5

Form(1) 内の写真のグループを切り替えようとしているときに問題が発生しました。選択した画像を表示するために picturebox.Image を使用しています。一定の時間間隔 (4 秒としましょう) の後、同じ写真グループ内のランダムな写真に切り替えます。

各写真を切り替えながら、別の Form(2) を 1 秒間表示して、Form(1) に戻りたいと思います。

Form(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();
        }
    }
}

Form(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に表示されませんが、デバッグ中モードは、写真が適切に選択されていることを示しています。

助けてくれてありがとう!ロイ。

4

1 に答える 1

1

タイマーからのTickイベントを使用して、時間が経過したことを知る必要があります。間隔が(==)4000に等しいかどうかを確認しますが、4000(time.Interval = 4000)に設定してから、タイマーを開始する必要があります。その後、Tickイベントは4秒後に発生します。pictureBox1.UpdateLayout()また、画像が表示されないという問題は、 ;を呼び出すことで解決できます。

于 2012-10-24T09:35:43.590 に答える