所以我有一个照片框,可以在一段时间后切换某些照片。
for(int i=1;i<=7;i++)
{
if (i == 1) { pictureBox1.Image = Properties.Resources.unu; Console.Beep(); }
if (i == 2) { pictureBox1.Image = Properties.Resources.doi; Console.Beep(); }
if (i == 3) { pictureBox1.Image = Properties.Resources.trei; Console.Beep(); }
if (i == 4) { pictureBox1.Image = Properties.Resources.patru; Console.Beep(); }
if (i == 5) { pictureBox1.Image = Properties.Resources.cinci; Console.Beep(); }
if (i == 6) { pictureBox1.Image = Properties.Resources.sase; Console.Beep(); }
Thread.Sleep(100);
}
注意:我已插入Console.Beep
只是为了查看该程序是否进入if
。
我听到哔哔声但图像没有变化,它仍然是默认值。为什么呢?
答案 0 :(得分:3)
因为您的应用程序在您退出循环之前不会处理事件。使用计时器。
答案 1 :(得分:1)
通过使用这样的阻止调用,您的程序无法重新输入UI代码并更新图像,直到完成后 - 这意味着它似乎无法更改。此外,根据您用于UI的内容(您可能应该用此标记您的问题!),您可能需要调用picturebox1.Update()
或.Refresh()
以强制控件重绘。
另请注意,由于操作可能会非常快,具体取决于您正在执行的操作,您需要插入Thread.Sleep(...)
个调用或某种方式等待每个图像更改之间的用户输入,或者您将最多看到模糊的图像,最后只出现最后一张图像。如果您使用的框架需要您拨打.Update()
,那么您也需要在图片互换之间进行此操作。