就是一个简单的form,在事件处选择paint,自动生成FormEntrance_Paint函数,然后我手工加了void OnPaint(PaintEventArgs e)函数,这两个函数内容都是空。我的理解是这两个函数是用来真正绘制的,既然这两个函数内容是空,那就应该什么都不画才是,可是,我的form上的那些按钮啊文本啊,还是如常显示了,请问是为什么,谢谢。

解决方案 »

  1.   

    这里的OnPaint是用来绘制form本身的,子控件有自己的paint函数。你的form本来就什么都没画——除了一个默认背景色
      

  2.   

    你自动生成的FormEntrance_Paint函数。应该是被添加到事件中,而From中原本的代码也会照常执行
      

  3.   

    +1
    确实每个控件都有自己的Paint函数
    你只是改的From。而且还不是重载的Paint函数,仅仅是添加了一个事件函数
      

  4.   


    明白了,虽然我重载form的OnPaint函数,而且在这个函数里面什么都没有做,但是,form上的每个子控件还是正常的进入了他们的OnPaint函数,进而触发了他们的默认Paint函数,所以,我还是在界面上看到正常显示的子控件。回去验证一下,重载textbox、label这些控件的OnPaint函数,看看是否如此的
      

  5.   

    想请教一下,有没有什么办法可以让整个form上的所有控件都不触发Paint函数啊,谢谢。我的界面在启动后在form_load函数中状态设置为最大化,由于界面上包括诸如tablelayoutpannel,pannel、下拉框、文本框能内容,在界面启动时,明显能够看到这些控件首先出现在设计时的位置,然后因为界面最大化的缘由,而改变了位置。所以,我想在最大化之前,我禁止所有控件的paint函数,然后在完成最大化后,再开启所有控件的paint函数,这样,大概可以解决问题吧。(还在摸索应该在什么事件函数中禁止,什么事件函数中开启)