C# 通过方法将图片框添加到窗体
我正在尝试创建一个递归方法,它以500毫秒的间隔向表单中添加一个picturebox,也就是说,我希望每隔500毫秒在表单上显示一个新的picturebox。但是,图片框仅在方法完成运行后出现(在我的例子中是8次)。换句话说,仅在4秒钟后,图片框出现,而我希望每500毫秒看到一个 下面是我的递归方法:C# 通过方法将图片框添加到窗体,c#,winforms,visual-studio-2010,C#,Winforms,Visual Studio 2010,我正在尝试创建一个递归方法,它以500毫秒的间隔向表单中添加一个picturebox,也就是说,我希望每隔500毫秒在表单上显示一个新的picturebox。但是,图片框仅在方法完成运行后出现(在我的例子中是8次)。换句话说,仅在4秒钟后,图片框出现,而我希望每500毫秒看到一个 下面是我的递归方法: public void QueenPos(bool[,] a,int x,int y,int c) { for (int i = y; i < a.GetLength(0); i++
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);
}
}
}
public void QueenPos(bool[,]a,int x,int y,int c)
{
for(int i=y;i
如果可能的话,我不想使用新的线程来添加图片框
任何帮助都将不胜感激。永远不要在UI线程上睡觉
相反,您应该使用WinForms计时器。永远不要在UI线程上睡眠
相反,您应该使用WinForms计时器。上面所说的关于不在UI线程上睡眠的说法是正确的 但是,您可以尝试以下操作,而不是
线程.Sleep(500)
调用
int count = 0
while(count++<10)
{
Application.DoEvents();
Thread.Sleep(50);
}
int count=0
而(count++上面所说的关于不在UI线程上睡觉的话是正确的
但是,您可以尝试以下操作,而不是线程.Sleep(500)
调用
int count = 0
while(count++<10)
{
Application.DoEvents();
Thread.Sleep(50);
}
int count=0
虽然(计数++不确定,但此递归似乎有缺陷。当您在循环中时调用QueenPos。不确定,但此递归似乎有缺陷。当您在循环中时调用QueenPos。谢谢…但我如何才能这样做?我还希望我的方法在继续之前停止500毫秒…我是否应该仅为添加picturebox添加计时器?@Shaiyehzkel:在计时器的勾号处理程序和一个图片框中,并在窗体中为下一个勾号增加一个字段。谢谢……但是我怎么做呢?我还希望我的方法在继续之前停止500毫秒……我是否应该只为添加图片框添加计时器?@Shaiyehzkel:在计时器的勾号处理程序中r、 和一个图片框,并在表单中增加一个字段,以便下一个勾号。