通过方法将图片框添加到表单

时间:2012-08-31 21:17:29

标签: c# winforms visual-studio-2010

我正在尝试制作一个递归方法,将一个图片框添加到表单中,间隔为500毫秒,这意味着,我希望每500毫秒新的图片框出现在表单上。但是,图片框仅在方法运行完毕后出现(在我的情况下为8次)。换句话说,只有4秒后,图片框出现了,而我期望每500毫秒看一次。

这是我的递归方法:

public void QueenPos(bool[,] a,int x,int y,int c)
{
    for (int i = y; i < a.GetLength(0); i++)
    {
          **some code**

            PictureBox im = new PictureBox();                            
            im.SizeMode = PictureBoxSizeMode.StretchImage;
            im.Image = Image.FromFile(@"path");
            im.Size = new Size(40, 40);
            im.Location = new Point((x * 50) + 305, ((i * 50) + 55));
            Controls.Add(im);
            im.BringToFront();

            Thread.Sleep(500);

            QueenPos(a, x + 1, 0, c + 1);
        }
    }
}

如果可能的话,我宁愿不使用新的线程来处理添加图片框。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

永远不要在UI线程上睡觉。

相反,您应该使用WinForms计时器。

答案 1 :(得分:2)

上面说的是关于不在UI线程上睡觉的说法。

但是,您可以尝试以下操作,而不是Thread.Sleep(500)来电

int count = 0
while(count++<10)
{
Application.DoEvents();
Thread.Sleep(50);
}