所有表单上的Picturebox都不会更新

时间:2012-09-26 12:09:11

标签: c# .net picturebox

我打开了很多表格(一次又一次地使用相同的新表格)。它们都是图片盒,应该自动更新。但是,当我启动多个时,除了最后选择/点击/活动的表单上的图片框不会在视觉上更新..所有代码都可以正常工作。但是,当我点击其中一个表格时,它会更新。这将使其更加清晰:http://i50.tinypic.com/2csaooh.jpg 如果你仔细观察(或者我知道它),只有左边的第一个表格正在更新,其他图片框不是.. 如果需要任何额外信息。我会提供它。

paint事件包含许多e.graphics.draw ...(...);代码..那就是..我一直在更新背景(我把背景属性..而不是图像作为背景)。

1 个答案:

答案 0 :(得分:0)

不幸的是,Invalidate()仅适用于焦点控件。看起来,没有很好的方法来强制重新绘制无聚焦的控件。

然而,问题可以用计时器解决,虽然这很脏:

private void Form1_Deactivate(object sender, EventArgs e)
{
    t = new System.Threading.Timer(new System.Threading.TimerCallback(t_Tick), null, 0, 100);
}

private void Form1_Activated(object sender, EventArgs e)
{
    t.Dispose();
}

void t_Tick(object sender)
{
    pictureBox1.Invoke((Action)delegate()
    {
        pictureBox1.Update();
    });
}

也许您应该考虑将所有控件添加到同一窗口。您的屏幕截图看起来不像需要多个窗口。