如题,我在一个PictureBox控件中放置了10多个panel和label,生成窗口时,窗口重绘,但是最小化该窗口了以后还原它时,还是会重绘一次所有的控件。希望大家帮忙教教如何解决这种情况。

解决方案 »

  1.   

    DoubleBuffered设成true,肯定会重绘的吧
      

  2.   

    窗口变化时,重绘.这很正常啊,为什么要解决呢?解决了放置的控件还能显示出来吗?win窗口在屏幕变化时不时地重绘,这是反映变化的机制.你可以继承picturebox并重载draw方法,控制它只绘一次,那什么都没了.
      

  3.   

    取消System.Windows.Form.paint事件
    试试看吧
      

  4.   

    我看Windows的窗体和我的都不一样,Windows的窗体都是打开第一次进行绘制,如果最小化窗体后,再次还原时,判断窗体是否位置移动,如果未移动就不再重绘,这样显示最小化的窗口时就很流畅。这方面的问题有遇到过的么?分享一下经验吧
      

  5.   

    .net 框架内存管理机制,如果窗体不是当前窗体,或是被其它窗体所挡住,在窗体上被挡住的部分内存会回收。当再次打开时,会进行重绘。如果你是觉的闪烁历害,就启动双缓冲。
      

  6.   

    是不是我的控件太多了,重绘的比较慢?但是我看过别人做的窗口,比我的内容多很多,但是最小化出来一下控件就重绘完成了。这是什么原因啊?会不会是我的label控件没有全部放在PictureBox里面导致双缓冲无效?
      

  7.   

    http://stackoverflow.com/questions/487661/how-do-i-suspend-painting-for-a-control-and-its-childrenhttp://blog.bee-eee.com/2008/04/18/c-getting-rid-of-the-jitter/http://topic.csdn.net/u/20090811/11/04537960-2015-4C76-987A-4A57613E363D.htmlhttp://www.soidc.net/articles/1213781277395/20081105/1215945564106_1.html发送WM_SETREDRAW消息
      

  8.   

     通常我们在设置子控件的一些与外观、布局有关的属性时,比如Size、Location、Anchor或Dock等,会激发子控件的 Layout事件,并可能会引起窗口重绘。当子控件较多时,如果频繁设置上述属性(例如在窗体的初始化代码中),多个子控件的Layout事件会引起窗口重绘效率问题,比如闪烁。特别地,通过动态加载插件生成的UI对象特别多时,闪烁的情况就特别严重。那么怎么解决这个问题呢?解决
        这时,通过使用控件的SuspendLayout方法,可以将控件的布局暂时挂起,其后的代码中将会把子控件的Layout事件暂时挂起,只是把相应属性的值设置为新值,并不激发Layout事件,待调用ResumeLayout方法后,再一起使子控件的Layout事件生效。当需要立即执行布局事件时,可以直接调用PerformLayout方法。
    private void InitializeComponent()
    {
        this.panel1.SuspendLayout();
        this.SuspendLayout();    ......//这里设置控件属性    ......//这里设置控件属性
        this.panel1.ResumeLayout(false);
        this.ResumeLayout(false);
    }
    http://blog.sina.com.cn/s/blog_48a45b950100hkpg.html