picturebox里放了个gif,当窗体最小化最大化的时候都很正常,但是一旦被其他窗体挡住,gif就停止在那一帧上了,最小化最大化应该触发窗体重绘,但是被遮挡住了为什么不行?怎么破?

解决方案 »

  1.   

    进行测试:
           private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                Console.WriteLine("2");
            }        private void Form1_Paint(object sender, PaintEventArgs e)
            {
                MessageBox.Show("1");
            }
    当窗体被最小化再还原时,picturebox和窗体的paint事件都被触发,但是当被其他窗体遮罩住时,两个paint均不触发,怎么破?多谢!!!
      

  2.   

    里面有属性设置的吧   再说了  你弹出的窗体  你换下另外的方法试试   比如说,showdialog
      

  3.   

    如果是gif,发现picturebox1一直在激发paint事件,最小化和窗体被挡住时才停止,区别在于:
    如果是最小化:恢复的时候gif继续接着播放,注意,最小化的时候gif一直在往下播,而不是停住.
    如果被其他窗体遮挡:恢复的时候gif停止.
    想到deactivate事件了,但是如果是简单的重绘picturebox,则gif重头播放.
    想要的效果:被挡住的时候,继续播放,和最小化时一样.可以自己找个gif试试.多谢大家了
      

  4.   

    OH YEAH,早上遇到楼主的问题,GOOGLE到这里,发现没别的资料了,后来自己研究,发现了一招可解燃眉之急,定义窗体的Activated事件,只要事件触发就this.Refresh(),搞定