0

3 つの異なる画像ボックスに画像をランダムに表示し、タイマー コントロールを使用して一定の間隔で画像を変更しています。

アプリケーションを閉じて再度開くと画像がランダムに表示されますが、タイマーを使用して画像をランダムに表示したいのですが、タイマーが機能しない理由がわかりません! 私はどこで間違っていますか?

Random random = new Random();
List<string> filesToShow = new List<string>();
List<PictureBox> pictureBoxes;
public Form2()
{
    InitializeComponent();
    Timer timer2 = new Timer();       
    pictureBoxes = new List<PictureBox> {
        pictureBox3,
        pictureBox4,
        pictureBox5
    };
    //ShowRandomImages();
    // Setup timer
    timer2.Interval = 1000; //1000ms = 1sec
    timer2.Tick += new EventHandler(timer2_Tick);
    timer2.Start();
}

private void ShowRandomImages()
{
    foreach (var pictureBox in pictureBoxes)
    {
        if (!filesToShow.Any())
            filesToShow = GetFilesToShow();
        int index = random.Next(0, filesToShow.Count);
        string fileToShow = filesToShow[index];
        pictureBox.ImageLocation = fileToShow;
        filesToShow.RemoveAt(index);
    }
}

private List<string> GetFilesToShow()
{
    string path = @"C:\Users\Monika\Documents\Visual Studio 2010\Projects\StudentModule\StudentModule\Image";
    return Directory.GetFiles(path, "*.jpg", SearchOption.TopDirectoryOnly).ToList();
}

private void timer2_Tick(object sender, EventArgs e)
{
    if (sender == timer2)
    {
        //Do something cool here
        ShowRandomImages();
    }

}
4

1 に答える 1

2

if (sender == timer2)...そのスコープには存在しません-同じ名前でより高いレベルで定義された別のtimer2インスタンスがない限り、コンパイル時エラーが成功を妨げているはずです。比較しているイベント。timer2

timer2簡単な修正は、次のように、コンストラクターのインスタンス化から型プレフィックスを削除することです。

timer2 = new Timer();   
于 2013-08-01T07:59:17.580 に答える