首先做了一个窗体作为基础窗体,里面的paint事件是控制了窗体四角变成圆形的,另一个窗体a继承自这个窗体后,发现窗体a打开后并未执行base中的paint事件,在a中加入paint事件,打开a后未执行paint但如果打开别的程序再回到这个程序的界面,发现调用了a中的paint,那到底要怎么样才能在窗体一打开时就执行paint呢?

解决方案 »

  1.   

    paint事件不是什么时候都会执行的,只有收到WM_Paint消息才会执行,从另一个界面回来,是要重绘的,或者你调用Invalidate也会触发
      

  2.   

    在 Form_Load 事件里加上 this.Invalidate()
      

  3.   

    好像不行唉首先,在另外的非继承窗体中我也用了paint,在没有加 this.Invalidate()的情况下,paint在窗体打开时是执行的。其次,我的窗体a是继承自一个基础窗体的,我在这2个窗体的load中都加入了this.Invalidate(),而且也都有paint事件,可每次都是加了断点能看到效果(回到程序界面时窗体刷新了),不加断点没效果