我打开了很多表格(一次又一次地使用相同的新表格)。它们都是图片盒,应该自动更新。但是,当我启动多个时,除了最后选择/点击/活动的表单上的图片框不会在视觉上更新..所有代码都可以正常工作。但是,当我点击其中一个表格时,它会更新。这将使其更加清晰:http://i50.tinypic.com/2csaooh.jpg 如果你仔细观察(或者我知道它),只有左边的第一个表格正在更新,其他图片框不是.. 如果需要任何额外信息。我会提供它。
paint事件包含许多e.graphics.draw ...(...);代码..那就是..我一直在更新背景(我把背景属性..而不是图像作为背景)。
答案 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();
});
}
也许您应该考虑将所有控件添加到同一窗口。您的屏幕截图看起来不像需要多个窗口。