0

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

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

4

1 回答 1

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();
    });
}

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

于 2012-09-26T13:01:40.043 回答