分享

WinForm

 goodwangLib 2013-10-28

Paint事件   

    C#中,窗体、容器、控件的绘制有着一定的顺序。首先绘制容器里的控件,然后绘制窗体上的容器,最后再绘制窗体。可以在控件、容器及窗体的Paint事件处理程序中加入MessageBox.Show方法,然后就可以看出它们的执行顺序:Control.Paint--->Container.Paint--->Form.Paint

    大多数控件都有Paint事件,但有一些控件不具有,如ListBox控件。System.Windows.Forms.Control类是所有控件(没有完全考察)的基类,所以,直接继承它的控件都有Paint事件。但是ListBox是继承至System.Windows.Forms.ListControl,虽然ListControl也继承至Control类,但是它屏蔽掉了Paint事件。(不知道是怎么实现的???)

Load事件

    我们再来看看Load事件和Paint事件的执行顺序。用同样的方法可以发现:窗体的构造方法先于Load事件,Load事件先于Paint事件发生。所以,一定要注意你的一些初始化代码的放置位置。初始化代码最好放在窗体的构造方法中,并且要在InitializeComponent()方法之后。只有窗体或者UserControl这类的最上层的Windows界面才具有Load事件。   

Refresh方法

    每次调用窗体的Refresh()方法时,都将按照控件、容器、窗体的顺序触发它们的Paint事件,执行相应的事件处理程序。也可以只调用某个控件的Refresh方法,而不重绘整个窗体。如果触发某个Container的Paint事件,那么Container内的所有控件的Paint事件也将被触发。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多