想做一个漂亮点的Button,所以重派生了一个Button
public class MyButton : System.Windows.Forms.Button
然后重写OnPaint
protected override void OnPaint(PaintEventArgs pevent)
        {
            if (!DesignMode)
            {
                MessageBox.Show("OnPaint");
            }
        }
结果,运行时就不段的跳出警告。为什么会一直重画呢?

解决方案 »

  1.   

    因为button的parent的重绘的时候有可能强制所有的child重绘,
    parent的parent的parent,一直向上,都有可能,
    另外OnPaint发生的频率是很高的,
    例如Form被遮挡了
      

  2.   

    to 结果,运行时就不段的跳出警告。为什么会一直重画呢?查看是否弹出窗口是否遮住了button,
    其次修改你的代码
    protected override void OnPaint(PaintEventArgs pevent)
    {
    if (!DesignMode)
    {
    MessageBox.Show("OnPaint");
    }
    base.OnPaint( pevent );
    }
      

  3.   

    建议Windows消息的调试的话,最好用Trace输出,不要用MessageBox之类UI的反馈,会引发新的消息,最终的结果是死的很难看。:D