0

画像が配列から読み込まれ、タイマーの目盛りごとにランダムに変更される、2 つの pictureBoxes を持つアプリを作成しています。画像が読み込まれないことがあり、pictureBox に小さな赤い十字が残るという問題に直面しています。新しいイメージをロードする前に以前のイメージを破棄する必要があると読みましたが (私は C# 初心者です)、最初のティックでアプリをクラッシュさせずに動作させることはできません。助けてくれませんか?

private void timer_Tick(object sender, EventArgs e)
    {
        index1 = rand.Next(0, pics.Length - 1);
        index2 = rand.Next(0, pics.Length - 1);
        pcb1.ImageLocation = pics[index1];
        pcb2.ImageLocation = pics[index2];
    }



try
{
    pcb1.Image.Dispose();
    pcb2.Image.Dispose();
    index1 = rand.Next(0, pics.Length - 1);
    index2 = rand.Next(0, pics.Length - 1);
    pcb1.ImageLocation = pics[index1];
    pcb2.ImageLocation = pics[index2];
}
catch (Exception)
{ 
    throw; 
}

- System.ArgumentException を教えてくれます

4

1 に答える 1

0

考えられる解決策:

try
{
    private void timer_Tick(object sender, EventArgs e)
    {
        index1 = rand.Next(0, pics.Length);
        if (File.Exists(pics[index1]))
        {
            Image img1 = Image.FromFile(pics[index1]);
            pcb1.Image = img1;
        }
        index2 = rand.Next(0, pics.Length);
        if (File.Exists(pics[index2]))
        {
            Image img2 = Image.FromFile(pics[index2]);
            pcb2.Image = img2;
        }
    }
}
catch (OutOfMemoryException oomEx)
{
    MessageBox.Show("Not a valid image.");
}
catch (Exception ex)
{
    //all others...respond appropriately
}
于 2013-05-30T15:58:33.727 に答える